一、UIView动画:
UIView可以产生动画效果的变化包括:
1.大小变化:改变视图框架(frame)和边界。
2.拉伸变化:改变视图内容的延展区域。
3.改变透明度:改变视图的alpha值。
4.改变状态:隐藏或显示状态。
5.改变视图层次顺序:视图哪个前哪个后。
6.旋转:即任何应用到视图上的仿射变换(transform)
UIView动画是成块运行的。发出beginAnimations:context:请求标志着动画块的开始;commitAnimations标志着动画块的结束。
代码如下:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
[UIView setAnimationDelegate:self];
[UIView commitAnimations];
其中transition取值范围:UIView类本身提供四种过渡效果:
UIViewAnimationTransitionNone 正常
UIViewAnimationTransitionFlipFromLeft 从左向右翻
UIViewAnimationTransitionFlipFromRight 从右向左翻
UIViewAnimationTransitionCurlUp 从下向上卷
UIViewAnimationTransitionCurlDown 从上向下卷
二、CATransition动画:
使用CATransition类实现动画,只需要建立一个Core Animation对象,设置它的参数,然后把这个带参数的过渡添加到图层即可。
使用要引入QuartzCore.framework
代码如下:
//创建动画效果类
CATransition *transition = [CATransition animation];
//设置动画时长
transition.duration = 0.7;
//设置动画淡入淡出的效果
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//{kCATransitionMoveIn, kCATransitionPush, kCATransitionReveal, kCATransitionFade};设置动画类型,移入,推出等
transition.type = kCATransitionMoveIn;
//更多私有{@"cube",@"suckEffect",@"oglFlip",@"rippleEffect",@"pageCurl",@"pageUnCurl",@"cameraIrisHollowOpen",@"cameraIrisHollowClose"};
//subtype有:{kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom};
transition.subtype = kCATransitionFromLeft;
//设置属性依赖
transition.delegate = self;
//在图层增加动画效果
[self.view.layer addAnimation:transition forKey:nil];
注::CATransition动画使用了类型type和子类型subtype两个概念。type属性指定了过渡的种类(淡化、推挤、揭开、覆盖)。subtype设置了过渡的方向(从上、下、左、右)。另外,CATransition私有的动画类型有(立方体、吸收、翻转、波纹、翻页、反翻页、镜头开、镜头关)。