IOS的 普通动画可使用UIKit提供的动画方式;

复杂动画可使用Core Animation。


1、 通过动画上下文使用UIKit动画

-(void)animationOfUIKit{UIView*redView=[[UIViewalloc]initWithFrame:CGRectMake(10,10,100,100)];[self.viewaddSubview:redView];//开始动画[UIViewbeginAnimations:@"test"context:nil];//动画时长[UIViewsetAnimationDuration:1];//设置动画淡入淡出[UIViewsetAnimationCurve:UIViewAnimationCurveEaseInOut];/**要进行动画设置的地方*/redView.backgroundColor=[UIColorblueColor];redView.frame=CGRectMake(50,50,200,200);redView.alpha=0.5;//动画结束[UIViewcommitAnimations];}


2、通过代码块使用UIKit动画

-(void)animationOfBlock{//初始化一个View,用来显示动画UIView*redView=[[UIViewalloc]initWithFrame:CGRectMake(10,10,100,100)];[self.viewaddSubview:redView];[UIViewanimateWithDuration:1//时长delay:0//延迟时间options:UIViewAnimationOptionTransitionFlipFromLeft//动画效果animations:^{//动画设置区域redView.backgroundColor=[UIColorblueColor];redView.frame=CGRectMake(50,50,200,200);redView.alpha=0.5;}completion:^(BOOLfinish){//动画结束时调用}];}


3、UIView的,翻转、旋转,偏移,翻页,缩放,取反的动画效果

CoreGraphics框架中的CGAffineTransform类可用于设定UIView的transform属性,控制视图的缩放、旋转和平移等操作 (另称为 放射变换矩阵),这种动画都是针对视图的原定最初位置的中心点为起始参照进行相应操作的,在操作结束之后可对设置量进行还原:

view.transform=CGAffineTransformIdentity;


翻转的动画

//开始动画[UIViewbeginAnimations:@"doflip"context:nil];//设置时常[UIViewsetAnimationDuration:1];//设置动画淡入淡出[UIViewsetAnimationCurve:UIViewAnimationCurveEaseInOut];//设置代理[UIViewsetAnimationDelegate:self];//设置翻转方向[UIViewsetAnimationTransition:UIViewAnimationTransitionFlipFromLeftforView:manImageViewcache:YES];//动画结束[UIViewcommitAnimations];


旋转动画

//创建一个CGAffineTransformtransform对象CGAffineTransformtransform;//设置旋转度数transform=CGAffineTransformRotate(manImageView.transform,M_PI/6.0);//动画开始[UIViewbeginAnimations:@"rotate"context:nil];//动画时常[UIViewsetAnimationDuration:2];//添加代理[UIViewsetAnimationDelegate:self];//获取transform的值[manImageViewsetTransform:transform];//关闭动画[UIViewcommitAnimations];


偏移动画

[UIViewbeginAnimations:@"move"context:nil];[UIViewsetAnimationDuration:2];[UIViewsetAnimationDelegate:self];//改变它的frame的x,y的值manImageView.frame=CGRectMake(100,100,120,100);[UIViewcommitAnimations];


翻页动画

[UIViewbeginAnimations:@"curlUp"context:nil];//指定动画曲线类型,该枚举是默认的,线性的是匀速的[UIViewsetAnimationCurve:UIViewAnimationCurveEaseInOut];//设置动画时常[UIViewsetAnimationDuration:1];[UIViewsetAnimationDelegate:self];//设置翻页的方向[UIViewsetAnimationTransition:UIViewAnimationTransitionCurlUpforView:manImageViewcache:YES];//关闭动画[UIViewcommitAnimations];


缩放动画

CGAffineTransformtransform=CGAffineTransformScale(manImageView.transform,1.2,1.2);[UIViewbeginAnimations:@"scale"context:nil];[UIViewsetAnimationDuration:2];[UIViewsetAnimationDelegate:self];[manImageViewsetTransform:transform];[UIViewcommitAnimations];


取反的动画效果是根据当前的动画取他的相反的动画

CGAffineTransformtransform=CGAffineTransformInvert(manImageView.transform);[UIViewbeginAnimations:@"Invert"context:nil];[UIViewsetAnimationDuration:2];//动画时常[UIViewsetAnimationDelegate:self];[manImageViewsetTransform:transform];//获取改变后的view的transform[UIViewcommitAnimations];//关闭动画