宽容他人,放过自己。

动画

Posted on By anchoriteFili

动画的分类

132126557202697.png

frame:视图框架

transform:视图转换

UIView动画的设置

132132193451728.png

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动画

132146142041709.png

uiviewTransition

132148324391177.png

CGAffineTransform是结构体,表示一个矩阵,用于映射视图变换

缩放、旋转、偏移是仿射变换的最常用的操作。

132153480957341.png

UIView和CALayer的区别和联系

CALayer负责绘制,提供UIView需要展示的内容。不能交互,是UIView的一个readonly属性。
UIView负责交互,显示CALayer绘制的内容。

CALayer的常用属性

132158265649634.png

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;

140902372824182.png

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作用:关键帧动画,可以让你的viewlayer按照预定轨迹做动画

+ (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(设置过渡动画的方向)