详解IOS图层转场动画
CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。iOS比MacOSX的转场动画效果少一点
UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果
属性解析:
- type:动画过渡类型
- subtype:动画过渡方向
- startProgress:动画起点(在整体动画的百分比)
- endProgress:动画终点(在整体动画的百分比)
具体代码:
/*过渡效果
fade//交叉淡化过渡(不支持过渡方向)kCATransitionFade
push//新视图把旧视图推出去kCATransitionPush
moveIn//新视图移到旧视图上面kCATransitionMoveIn
reveal//将旧视图移开,显示下面的新视图kCATransitionReveal
cube//立方体翻滚效果
oglFlip//上下左右翻转效果
suckEffect//收缩效果,如一块布被抽走(不支持过渡方向)
rippleEffect//滴水效果(不支持过渡方向)
pageCurl//向上翻页效果
pageUnCurl//向下翻页效果
cameraIrisHollowOpen//相机镜头打开效果(不支持过渡方向)
cameraIrisHollowClose//相机镜头关上效果(不支持过渡方向)
*/
/*过渡方向
kCATransitionFromRight
kCATransitionFromLeft
kCATransitionFromBottom
//转场动画--》是针对某个view的图层进行转场动画
#import"ViewController.h"
#import<QuartzCore/QuartzCore.h>
@interfaceViewController()
{
UIView*_lastview;
BOOLflag;
}
@end
@implementationViewController
-(void)viewDidLoad
{
[superviewDidLoad];
flag=true;
UIView*view=[[UIViewalloc]initWithFrame:CGRectMake(100,100,200,200)];
view.backgroundColor=[UIColorredColor];
[self.viewaddSubview:view];
[viewrelease];
_lastview=view;
//Doanyadditionalsetupafterloadingtheview,typicallyfromanib.
}
-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{
if(flag){
_lastview.backgroundColor=[UIColoryellowColor];
flag=false;
}
else{
_lastview.backgroundColor=[UIColorredColor];
flag=true;
}
//转场动画--就是对某个view进行动画切换。
//1:如果是控制器之间的切换,其实window上view进行切换
CATransition*transion=[CATransitionanimation];
//设置转场动画的类型
transion.type=@"pageCurl";
//设置转场动画的方向
transion.subtype=@"fromLeft";
//把动画添加到某个view的图层上
[self.view.layeraddAnimation:transionforKey:nil];
}
控制器直接切换动画
UIApplication*app=[UIApplicationsharedApplication]; AppDelegate*dd=app.delegate; MyViewController*my=[[MyViewControlleralloc]init]; //切换根控制器,其实把视图控制器的view在window上切换。所以在转场动画要作用在window上 dd.window.rootViewController=my; CATransition*trans=[CATransitionanimation]; trans.type=@"pageCurl"; trans.subtype=@"fromTop"; [dd.window.layeraddAnimation:transforKey:nil]; [myrelease];
以上就是本文的全部内容,希望对大家的学习有所帮助。