iOS – CoreAnimation笔记(2) – CATransition | CAAnimationGroup

CoreAnimation 学习笔记2 – CATransition CAAnimationGroup

最开始transition和transform分不清,尤其是在CSS动画中。在iOS中可以将transition理解为转场,比如UINavigationController的跳转。CATransition主要为图层提供移入、移出屏幕的动画效果。

CATransition

CATransition是CAAnimation的子类。

// 转场名称。当前合法的转场类型有: fade, moveIn, push, reveal。默认是fade。
open var type: CATransitionType

// 转场子类型。可选值为: fromLeft, fromRight, formTop, fromBottom。
open var subtype: CATransitionSubtype?

// 动画起点,0~1。表示在整个动画中的比例
open var startProgress: Float
// 动画终点,0~1。必须大于等于startProgress
open var endProgress: Float

在CATransition的demo时,发现大家列举的转场类型并不只有这个四个。但是在OC和Swift的CATransition源代码来看,确实只有这四个。官方注释中也说了,目前合法的类型是这四个。

// 其他blog提供的转场类型。
typedef NS_ENUM(NSInteger, CATransitionType) {
    CATransitionTypeFade = 1,      // 淡化
    CATransitionTypeMoveIn,        // 覆盖
    CATransitionTypePush,          // push
    CATransitionTypeReveal,         // 揭开 
    CATransitionTypeCube,         // 3D立方
    CATransitionTypeSuckEffect,   // 吮吸
    CATransitionTypeOglFlip,      // 翻转
    CATransitionTypeRippleEffect,  // 波纹    
    CATransitionTypePageCurl,      // 翻页
    CATransitionTypePageUnCurl,        // 反翻页
    CATransitionTypeCameraIrisHollowOpen,      // 开镜头
    CATransitionTypeCameraIrisHollowClose,     //  关镜头
};

目前除了合法的四个外,其余都是Apple的私有API。如果使用了大概率会影响上架。

具体实现效果较为简单,不做Demo

CAAnimationGroup

是CAAnimation的子类,同时也只有一个专有属性。

open var animations: [CAAnimation]?

animations 可以保存一组动画对象,将CAAnimationGroup对象加入图层后,组中所有动画对象可以同时并发运行。

可以单独设置动画对象的beginTime属性来更改动画的开始时间。