#define kDuration 0.7
CATransition *animation = [CATransition animation];
animation.delegate = self;
animation.duration = kDuration;
animation.timingFunction = UIViewAnimationCurveEaseInOut;
//先慢后快
animation.timingFunction = UIViewAnimationCurveEaseInOut;
animation.fillMode = kCAFillModeForwards;
animation.type=kCATransitionReveal;//动画效果
animation.subtype=kCATransitionFromBottom;
NSUInteger green1 = [[self.view subviews] indexOfObject:self.green];
NSUInteger blue1 = [[self.view subviews] indexOfObject:self.blue];
[self.view exchangeSubviewAtIndex:green1 withSubviewAtIndex:blue1];
[[self.view layer] addAnimation:animation forKey:@"animation"];
//各种动画效果
/*
kCATransitionFade;
kCATransitionMoveIn;
kCATransitionPush;z
kCATransitionReveal;
*/
/*
kCATransitionFromRight;
kCATransitionFromLeft;
kCATransitionFromTop;
kCATransitionFromBottom;
*/
//各种组合
animation.type = kCATransitionPush;
animation.subtype = kCATransitionFromRight;
[self.view.layer addAnimation:animation forKey:@"animation"];
CATransition Private API动画:
animation.type可以设定为以下效果
动画效果汇总:
/*
suckEffect(三角)
rippleEffect(水波抖动)
pageCurl(上翻页)
pageUnCurl(下翻页)
oglFlip(上下翻转)
cameraIris/cameraIrisHollowOpen/cameraIrisHollowClose (镜头快门,这一组动画是有效果,只是很难看,不建议使用
而以下为则黑名单:
spewEffect: 新版面在屏幕下方中间位置被释放出来覆盖旧版面.
- genieEffect: 旧版面在屏幕左下方或右下方被吸走, 显示出下面的新版面 (阿拉丁灯神?).
- unGenieEffect: 新版面在屏幕左下方或右下方被释放出来覆盖旧版面.
- twist: 版面以水平方向像龙卷风式转出来.
- tubey: 版面垂直附有弹性的转出来.
- swirl: 旧版面360度旋转并淡出, 显示出新版面.
- charminUltra: 旧版面淡出并显示新版面.
- zoomyIn: 新版面由小放大走到前面, 旧版面放大由前面消失.
- zoomyOut: 新版面屏幕外面缩放出现, 旧版面缩小消失.
- oglApplicationSuspend: 像按"home" 按钮的效果.
*/