实现iPhone漂亮的动画效果主要有两种方法,
一种是UIView层面的,
一种是使用CATransition进行更低层次的控制,
第一种是UIView,UIView方式可能在低层也是使用CATransition进行了封装,它只能用于一些简单的、常用的效果展现,这里写一个常用的示例代码,供大家参考。
第二种方式相对复杂一些,但如果更好的进行控制,还是使用这种方法吧,
基本使用方法可以看一下如下例子:
这里使用了setType与setSubtype组合,这使用个比较保险,因为他的参数就是官方API里定义的,他们的参数说明可以参考如下:
[animation setType:@"suckEffect"];
这里的suckEffect就是效果名称,可以用的效果主要有:
pageCurl 向上翻一页pageUnCurl 向下翻一页
rippleEffect 滴水效果
suckEffect 收缩效果,如一块布被抽走
cube 立方体效果
oglFlip 上下翻转效果
更多的效果参考:http://iphonedevwiki.net/index.php?title=CATransition
最后再给出一种常用代码供大家参考
//创建CATransition对象 CATransition *animation = [CATransition animation]; //相关参数设置 [animation setDelegate:self]; [animation setDuration:1.0f]; [animation setTimingFunction:UIViewAnimationCurveEaseInOut]; //向上卷的参数 if(!isCurl) { //设置动画类型为pageCurl,并只卷一半 [animation setType:@"pageCurl"]; animation.endProgress=0.8; } //向下卷的参数 else { //设置动画类型为pageUnCurl,并从一半开始向下卷 [animation setType:@"pageUnCurl"]; animation.startProgress=0.2; } //卷的过程完成后停止,并且不从层中移除动画 [animation setFillMode:kCAFillModeForwards]; //[animation setSubtype:kCATransitionFromBottom]; [animation setSubtype:kCATransitionFromRight]; [animation setRemovedOnCompletion:NO]; isCurl=!isCurl; [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1]; [[self.view layer] addAnimation:animation forKey:@"pageCurlAnimation"];