美文网首页
iOS动画(Core Animation)总结

iOS动画(Core Animation)总结

作者: 奋斗的蝼蚁 | 来源:发表于2018-03-05 23:06 被阅读0次

    开篇先上图,其他都靠编。


    1644426-330ae214a7101048.png 1468230232970410.jpg

    核心动画位于UIKit的下一层,相比UIView动画,它可以实现更复杂的动画效果。核心动画作用在CALayer(Core animation layer)上,CALayer从概念上类似UIView,我们可以将UIView看成是一种特殊的CALayer(可以响应事件)。核心动画和UIView动画的对比:UIView动画可以看成是对核心动画的封装,和UIView动画不同的是,通过核心动画改变layer的状态(比如position),动画执行完毕后实际上是没有改变的(表面上看起来已改变)

    核心动画类中可以直接使用的类有:
      CABasicAnimation
      CAKeyframeAnimation
      CATransition
      CAAnimationGroup
      CASpringAnimation
    
    核心动画类的常用属性:
    keyPath:可以指定keyPath为CALayer的属性值,并对它的值进行修改,以达到对应的动画效果,需要注意的是部分属性值是不支持动画效果的。
    以下是具有动画效果的keyPath:
     //CATransform3D Key Paths : (example)transform.rotation.z
         //rotation.x
         //rotation.y
         //rotation.z
         //rotation 旋轉
         //scale.x
         //scale.y
         //scale.z
         //scale 缩放
         //translation.x
         //translation.y
         //translation.z
         //translation 平移
         //CGPoint Key Paths : (example)position.x
         //x
         //y
         //CGRect Key Paths : (example)bounds.size.width
         //origin.x
         //origin.y
         //origin
         //size.width
         //size.height
         //size
         //opacity
         //backgroundColor
         //cornerRadius 
         //borderWidth
         //contents 
         //Shadow Key Path:
         //shadowColor 
         //shadowOffset 
         //shadowOpacity 
         //shadowRadius
    
    常用属性:
      beginTime : 动画的开始时间
      autoreverses : 执行的动画按照原动画返回执行
      duration:动画的持续时间
     repeatCount:动画的重复次数
    timingFunction:动画的时间节奏控制
    
     timingFunctionName的enum值如下:
         kCAMediaTimingFunctionLinear 匀速
         kCAMediaTimingFunctionEaseIn 慢进
         kCAMediaTimingFunctionEaseOut 慢出
         kCAMediaTimingFunctionEaseInEaseOut 慢进慢出
         kCAMediaTimingFunctionDefault 默认值(慢进慢出)
    
    fillMode:视图在非Active时的行为
    
      removedOnCompletion:动画执行完毕后是否从图层上移除,默认为YES(视图会恢复到动画前的状态),可设置为NO(图层保持动画执行后的状态,前提是fillMode设置为kCAFillModeForwards)
    
    beginTime:动画延迟执行时间(通过CACurrentMediaTime() + your time 设置)
    
     delegate:代理
    代理方法如下:
         - (void)animationDidStart:(CAAnimation *)anim;  //动画开始
         - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag; //动画结束
    path:关键帧动画中的执行路径
    
    type:过渡动画的动画类型,系统提供了四种过渡动画。
    kCATransitionFade 渐变效果
    kCATransitionMoveIn 进入覆盖效果
    kCATransitionPush 推出效果
    kCATransitionReveal 揭露离开效果
    subtype : 过渡动画的动画方向
    kCATransitionFromRight 从右侧进入
    kCATransitionFromLeft 从左侧进入
    kCATransitionFromTop 从顶部进入
    kCATransitionFromBottom 从底部进入
    
    CABasicAnimation
    重要属性
             fromValue:keyPath对应的初始值
             toValue:keyPath对应的结束值
     基础动画主要提供了对于CALayer对象中的可变属性进行简单动
     画的操作。比如:位移、透明度、缩放、旋转、背景色等等。
    
    关键帧动画(CAKeyframeAnimation)
    CAKeyframeAnimation和CABaseAnimation都属于CAPropertyAnimatin的子类。CABaseAnimation只能从一个数值(fromValue)变换成另一个数值(toValue),而CAKeyframeAnimation则会使用一个NSArray保存一组关键帧。
    values:就是上述的NSArray对象。里面的元素称为”关键帧”(keyframe)。动画对象会在指定的时间(duration)内,依次显示values数组中的每一个关键帧
    path:可以设置一个CGPathRef\CGMutablePathRef,让层跟着路径移动。path只对CALayer的anchorPoint和position起作用。如果你设置了path,那么values将被忽略。
    keyTimes:可以为对应的关键帧指定对应的时间点,其取值范围为0到1.0,keyTimes中的每一个时间值都对应values中的每一帧.当keyTimes没有设置的时候,各个关键帧的时间是平分的。
    
    组动画(CAAnimationGroup)
    CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行。
    重要属性
    animations: 用来保存一组动画对象的NSArray。
    
    过渡动画(CATransition)
    CAAnimation的子类,用于做过渡动画或者转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。
    重要属性
    type:动画过渡类型
    Apple 官方的SDK其实只提供了四种过渡效果。
    kCATransitionFade 渐变效果
    kCATransitionMoveIn 进入覆盖效果
    kCATransitionPush 推出效果
    kCATransitionReveal 揭露离开效果
    

    http://www.cocoachina.com/ios/20160712/17010.html
    https://www.jianshu.com/p/02c341c748f9
    http://www.cocoachina.com/ios/20160517/16290.html

    相关文章

      网友评论

          本文标题:iOS动画(Core Animation)总结

          本文链接:https://www.haomeiwen.com/subject/zipkfftx.html