需要在frameworks中添加QuartzCore.framework
<wbr></wbr>
在接口程序中加上头文件<wbr><wbr> #import <QuartzCore/QuartzCore.h></wbr></wbr>
<wbr></wbr>
<wbr><wbr><wbr> CATransition *transition = [CATransition animation];<br><wbr><wbr><wbr> transition.duration = 1.0f;<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr><wbr><wbr><wbr> transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEa<wbr>seInEaseOut];<br><wbr><wbr><wbr> transition.type = @"rippleEffect";<wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
//@"cube" @"moveIn" @"reveal" @"fade"(default) @"pageCurl" @"pageUnCurl" @"suckEffect" @"rippleEffect" @"oglFlip"
<wbr><wbr><wbr> transition.subtype = kCATransitionFromRight;<wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr><wbr><wbr><wbr> transition.delegate = self;<br><wbr><wbr><wbr> [navigationController.view.layer<wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr> addAnimation:transition forKey:nil];
<wbr></wbr>
//另外加一句,transition在申请时用的是+方法,所以不需要自己进行release ,在层上添加后不要认为retainCount已经+1,就还要release
//实际上CATransition类中还有一个属性是removedOnCompletion,是此动画执行完后会自动remove,默认值为true
CATransition的type属性
这里使用了setType与setSubtype组合,这使用个比较保险,因为他的参数就是官方API里定义的,他们的参数说明可以参考如下:
<wbr></wbr>
- <strong>setType<span<wbr>style=</wbr>"color:#339933">:</span>可以返回四种类型:</strong><wbr><wbr></wbr></wbr>
- kCATransitionFade淡出<wbr><wbr></wbr></wbr>
- kCATransitionMoveIn覆盖原图<wbr><wbr></wbr></wbr>
- kCATransitionPush推出<wbr><wbr></wbr></wbr>
- kCATransitionReveal底部显出来<wbr><wbr></wbr></wbr>
- <strong>setSubtype<span<wbr>style=<span style="margin: 0px; padding: 0px; border: none; color: blue; background-color: inherit;">"color:#339933"</span><span style="margin: 0px; padding: 0px; border: none; background-color: inherit;">>:</span>也可以有四种类型:</strong><wbr><wbr></wbr></wbr></span></wbr>
- kCATransitionFromRight;<wbr><wbr></wbr></wbr>
- kCATransitionFromLeft<span<wbr>style=<span style="margin: 0px; padding: 0px; border: none; color: blue; background-color: inherit;">"color:#009900"</span><span style="margin: 0px; padding: 0px; border: none; background-color: inherit;">>(</span>默认值<span<wbr>style=</wbr></span><span style="margin: 0px; padding: 0px; border: none; color: blue; background-color: inherit;">"color:#009900"</span><span style="margin: 0px; padding: 0px; border: none; background-color: inherit;">>)</span><wbr><wbr></wbr></wbr></span></wbr>
- kCATransitionFromTop;<wbr><wbr></wbr></wbr>
- kCATransitionFromBottom<wbr><wbr></wbr></wbr>
<wbr></wbr>
还有一种设置动画类型的方法,不用setSubtype,只用setType
<wbr></wbr>
- animation.type=@"pageCurl";<wbr><wbr></wbr></wbr>
- pageCurl<wbr><wbr><wbr>向上翻一页<wbr><wbr></wbr></wbr></wbr></wbr></wbr>
- pageUnCurl<wbr>向下翻一页<wbr><wbr></wbr></wbr></wbr>
- rippleEffect<wbr>滴水效果<wbr><wbr></wbr></wbr></wbr>
- suckEffect<wbr>收缩效果,如一块布被抽走<wbr><wbr></wbr></wbr></wbr>
- cube<wbr>立方体效果<wbr><wbr></wbr></wbr></wbr>
- oglFlip<wbr>上下翻转效果<wbr><wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr><wbr> 示例</wbr></wbr>
CATransition *animation=[CATransition animation];
<wbr>animation.delegate=self;<br><wbr>animation.duration=1.0f;</wbr></wbr>
animation.timingFunction=UIViewAnimationCurveEase<wbr>InOut;</wbr>
animation.type=kCATransitionMoveIn;
animation.subtype=kCATransitionFromTop;
<wbr>[myView.layer addAnimation:animation forKey:@"move in"];</wbr>