美文网首页iOS开发
Animation_KeyFrameAnimation

Animation_KeyFrameAnimation

作者: iOS小童 | 来源:发表于2017-11-23 12:51 被阅读9次

    Welcome to my blog. Thanks.

    Dome: github地址

    CAPropertyAnimation 的子类有CABsicAnimation 和 CAKeyframeAnimation。
    今天要说的就是CAKeyframeAnimation关键帧动画,毫无疑问一切复杂的动画都是由简单的动画拼接来的,知其所以然,需要的时候必定能写出好的动画

    keyFrameAnimation

    属性值了解

    1、关键帧值数组,一组变化值

    @property(nullable, copy) NSArray *values;
    

    2、关键帧帧路径,优先级比values大

    @property(nullable) CGPathRef path;
    

    3、每一帧对应的时间,时间可以控制速度.它和每一个帧相对应,取值为0.0-1.0,不设则每一帧时间相等.

    @property(nullable, copy) NSArray *keyTimes;
    

    4、每一帧对应的时间曲线函数,也就是每一帧的运动节奏

    @property(nullable, copy) NSArray *timingFunctions;
    

    5、动画的计算模式,默认值: kCAAnimationLinear.有以下几个值:

    @property(copy) NSString *calculationMode;
    
    kCAAnimationLinear
    关键帧为座标点的时候,关键帧之间直接直线相连进行插值计算;
    
    kCAAnimationDiscrete
    离散的,也就是没有补间动画
    
    kCAAnimationPaced
    平均,keyTimes跟timeFunctions失效
    
    kCAAnimationCubic
    对关键帧为座标点的关键帧进行圆滑曲线相连后插值计算,对于曲线的形状还可以通过tensionValues,continuityValues,biasValues来进行调整自定义,keyTimes跟timeFunctions失效
    
    kCAAnimationCubicPaced
    在kCAAnimationCubic的基础上使得动画运行变得均匀,就是系统时间内运动的距离相同,,keyTimes跟timeFunctions失效
    

    6、动画的张力,当动画为立方计算模式的时候此属性提供了控制插值,因为每个关键帧都可能有张力所以连续性会有所偏差它的范围为[-1,1].同样是此作用

    @property(nullable, copy) NSArray *tensionValues;
    

    7、动画的连续性值

    @property(nullable, copy) NSArray *continuityValues;
    

    8、动画的偏斜率

    @property(nullable, copy) NSArray *biasValues;
    

    9、动画沿路径旋转方式,默认为nil.它有两个值:

    @property(nullable, copy) NSString *rotationMode;
    kCAAnimationRotateAuto
    自动旋转
    kCAAnimationRotateAutoReverse
    自动翻转
    

    动画应用

    draw a curve

    keyFrame:
    path:路径
    duration:单次时间
    rotationMode:旋转样式
    repeatCount:重复次数
    

    1、弧形

    - (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise ;
    center : 弧形的中心
    radius: 弧形的半径
    startAngle:弧形开始弧度
    endAngle:弧形结束弧度
    colockwise:顺逆时针
    

    2、抛物线

    - (void)moveToPoint:(CGPoint)point
    - (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint;
    point:开始位置
    endPoint:结束位置
    controlPoint:拐点位置
    

    3、椭圆形

    + (instancetype)bezierPathWithOvalInRect:(CGRect)rect;
    rect: x起点
           y起点
           width宽度
           height高度
    

    4、圆形

    rect:
    width = height
    

    相关文章

      网友评论

        本文标题:Animation_KeyFrameAnimation

        本文链接:https://www.haomeiwen.com/subject/jwkzvxtx.html