动画的分类
frame:视图框架
transform:视图转换
UIView动画的设置
UIView动画的实现
动画块方法
[UIView beginAnimations:nil context:nil]; //标记动画块的开始
//设置各种动画属性
[UIView commitAnimations]; //标记动画块结束
block动画的方法
[UIView animateWithDuration:1.0 animations:^{
//在块语法中设置各种动画属性
}]; //语句结束之后自动执行动画
/**
创建弹性动画
damping:阻尼,范围0-1,阻尼月接近于0,弹性效果越明显
velocity: 弹性复位的速度
*/
[UIView animateWithDuration:5.0 delay:0 usingSpringWithDamping:0.1 initialSpringVelocity:1.0 options:UIViewAnimationOptionCurveLinear animations:^{
_imageView.center = location;
} completion:nil];
UIViewBlock动画
uiviewTransition
CGAffineTransform是结构体,表示一个矩阵,用于映射视图变换
缩放、旋转、偏移是仿射变换的最常用的操作。
UIView和CALayer的区别和联系
CALayer负责绘制,提供UIView需要展示的内容。不能交互,是UIView的一个readonly属性。
UIView负责交互,显示CALayer绘制的内容。
CALayer的常用属性
CAAnimation是抽象类,通常使用他的子类实现动画效果 所有的CAAnimation及其子类的对象冬添加在View的layer上,例如:
[view.layer addAnimation:animation forKey:nil];
给layer添加/移除CALayer动画
- (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key;
- (void)removeAnimationForKey:(NSString *)key;
- (void)removeAllAnimations;
CAPropertyAnimation
CAPropertyAnimation也是一个抽象类 通常我们都使用它的子类:CABasicAnimation和CAKeyFrameAnimatioin CABasicAnimation作用:作为layer动画,通过设定初始和结束值执行动画。
+ (id)animationWithKeyPath:(NSString *)path; -----系统提供的构造器方法。
@property (copy) NSString *keyPath; -----只能填写CALayer中能够做动画的属性名。
@property (retain) id fromValue; -----起始值
@property (retain) id toValue; -----结束值
@property (retain) id byValue; -----相对值
CAKeyFrameAnimatioin作用:关键帧动画,可以让你的view的layer按照预定轨迹做动画
+ (id)animationWithKeyPath:(NSString *)path; -----系统提供的构造算法
@property CGPathRef path; -----通过制定一个自己定义的path来让某一个物体按照这个路径进行动画
@property (copy) NSArray *values; -----一个数组,提供了一组关键帧的值,当使用path的时候,values的值自动被忽略。
@property (copy) NSArray *keyTimes; -----一个数组,设置每一帧的时间,其成员必须是NSNumber.
@property (copy) NSString *rotationMode; -----设定关键帧中间的值是如何计算。
CAAnimationGroup是一个数组属性,可以添加多个CAAnimation,一起执行。
CATrastion作用:layer的过渡动画。
有两个主要属性:type(设置过渡动画效果)和subType(设置过渡动画的方向)