转场动画是用于两个view之前的切换效果;普通动画和关键帧动画是用于view中的某一个子视图的动画效果;
CATransition *animation = [CATransition animation];
animation.duration = 0.5f;//时间
animation.type = kCATransitionFade;
animation.subtype = KCATransitionFromTop;
[self.view.layer addAnimation:animation forked:@“animation”];
fillmode 属性与动画效果无关,主要是用来设置动画开始前或者动画结束后的效果。
kCAFillModeRemoved 默认,当动画开始前和动画结束后,动画对layer都没有影响,动画结束后,layer会恢复到之前的状态 kCAFillModeForwards 当动画结束后,layer会一直保持着动画最后的状态 kCAFillModeBackwards 和kCAFillModeForwards相对,具体参考上面的URL kCAFillModeBoth kCAFillModeForwards和kCAFillModeBackwards在一起的效果removeOnCompletion 一般情况下不需要设置,当启用fillmode后要出现效果就必须设置为NO;
比如:要设置一个跟随手指移动的动画,当动画执行完毕后,不设置fillmode为forwards的话这个动画结束之后还是回变成动画执行之前的那个效果;
type
* 各种动画效果 其中除了'fade', `moveIn', `push' , `reveal' ,其他属于似有的API(我是这么认为的,可以点进去看下注释). * ↑↑↑上面四个可以分别使用'kCATransitionFade', 'kCATransitionMoveIn', 'kCATransitionPush', 'kCATransitionReveal'来调用. * @"cube" 立方体翻滚效果 * @"moveIn" 新视图移到旧视图上面 * @"reveal" 显露效果(将旧视图移开,显示下面的新视图) * @"fade" 交叉淡化过渡(不支持过渡方向) (默认为此效果) * @"pageCurl" 向上翻一页 * @"pageUnCurl" 向下翻一页 * @"suckEffect" 收缩效果,类似系统最小化窗口时的神奇效果(不支持过渡方向) * @"rippleEffect" 滴水效果,(不支持过渡方向) * @"oglFlip" 上下左右翻转效果 * @"rotate" 旋转效果 * @"push" * @"cameraIrisHollowOpen" 相机镜头打开效果(不支持过渡方向) * @"cameraIrisHollowClose" 相机镜头关上效果(不支持过渡方向) */ * kCATransitionFade 交叉淡化过渡 * kCATransitionMoveIn 新视图移到旧视图上面 * kCATransitionPush 新视图把旧视图推出去 * kCATransitionReveal 将旧视图移开,显示下面的新视subtype
* 各种动画方向 * * kCATransitionFromRight; 同字面意思(下同) * kCATransitionFromLeft; * kCATransitionFromTop; * kCATransitionFromBottom; */ * 当type为@"rotate"(旋转)的时候,它也有几个对应的subtype,分别为: * 90cw 逆时针旋转90° * 90ccw 顺时针旋转90° * 180cw 逆时针旋转180° * 180ccw 顺时针旋转180°timingFunction
* 用于变化起点和终点之间的插值计算,形象点说它决定了动画运行的节奏,比如是均匀变化(相同时间变化量相同)还是 * 先快后慢,先慢后快还是先慢再快再慢. * * 动画的开始与结束的快慢,有五个预置分别为(下同): * kCAMediaTimingFunctionLinear 线性,即匀速 * kCAMediaTimingFunctionEaseIn 先慢后快 * kCAMediaTimingFunctionEaseOut 先快后慢 * kCAMediaTimingFunctionEaseInEaseOut 先慢后快再慢 * kCAMediaTimingFunctionDefault 实际效果是动画中间比较快.来源:https://www.cnblogs.com/evangao/p/4243687.html