首先需要明确一点的是CATransition是继承自CAAnimation 也就是继承自 核心动画
创建一个动画 这个方法是调用的CAAnimation的方法 返回的是一个动画的类型
CATransition *transition = [CATransition animation];
也是调用父类CAAnimation的方法,
UIViewAnimationCurveEaseInOut, // 开始和末尾比较慢
UIViewAnimationCurveEaseIn, // 开始的时候比较慢
UIViewAnimationCurveEaseOut, // 结束的时候比较慢
UIViewAnimationCurveLinear // 匀速
transition.timingFunction = UIViewAnimationCurveEaseInOut;
设置动画的时间是10秒 这个属性是父类的CAAnimation的CAMediaTiming协议方法
transition.duration = 10;
type 有很多类型
fade 默认的是fade
moveIn 移动进来
push 推出去
reveal
suckEffect 三角
rippleEffect 水波抖动
pageCurl 上翻页
pageUnCurl 下翻页
oglFlip 上下翻转
cameraIrisHollowOpen 镜头快门开
cameraIrisHollowClose 镜头快门开
慎用 貌似不管用了下面的都只是一种效果
spewEffect 新版面在屏幕下方中间位置被释放出来覆盖旧版面.
genieEffect 旧版面在屏幕左下方或右下方被吸走, 显示出下面的新版面
unGenieEffect 新版面在屏幕左下方或右下方被释放出来覆盖旧版面.
twist 版面以水平方向像龙卷风式转出来.
tubey 版面垂直附有弹性的转出来.
swirl 旧版面360度旋转并淡出, 显示出新版面.
charminUltra 旧版面淡出并显示新版面.
zoomyIn 新版面由小放大走到前面, 旧版面放大由前面消失.
zoomyOut 新版面屏幕外面缩放出现, 旧版面缩小消失.
oglApplicationSuspend 像按”home” 按钮的效果
transition.type = @"push";
subtype有四种方式
fromLeft
fromRight
fromTop
fromBottom
transition.subtype = @"fromLeft";
startProgress
to start the transition half way through its progress set startProgress to 0.5.
The default value is 0
默认是0 我的理解是 假如这个动画是10秒 他会一下跳到这个动画(设置为0.5的时候)50%处,从这个点开始执行 执行10秒停止
transition.startProgress = 0.5;
默认是1 而且必须要比startProgress大 否则动画将会使逆向的
从开始执行到这个动画的60%初停止
一般 我们设置CATransition动画的时候 这两个值都是默认值 我们一般不做操作
transition.endProgress = 0.6;
至于filter这个属性 感觉好难,研究了研究没结果,本人很菜,若有大神知道,求回复,求指导。
最后 把这个动画加到要动画的控件上去
[self.imageView.layer addAnimation:transition forKey:nil];