CABasicAnimation

作者: 雪雪雪雪佳佳佳佳 | 来源:发表于2016-02-16 21:11 被阅读114次

    别忘了添加到layer上!!!!!

    //创建动画对象

       CABasicAnimation *base = [CABasicAnimation animationWithKeyPath:@"transform.scale”];//transform.rotation.z旋转  详见layer文档

       base.duration = 1;//设定开始值到结束值花费的时间

       base.removedOnCompletion = YES;//指定的时间段完成后,动画就自动的从层上移除

       base.speed = 1.0;//默认的值为1.0.动画播放的速度

       base.beginTime = 1;//延时多长时间播放动画一班在动画组中有用

       base.timeOffset = 1;//时间偏移量

       base.repeatCount = HUGE_VALF;//动画重复次数

       base.repeatDuration = 10;//动画重复多久

       base.autoreverses = YES;//自动恢复

       base.fillMode = kCAFillModeBackwards;//填充模式

    /*

       fillMode属性 (要想fillMode有效,最好设置removeOnCompletion = NO)

       kCAFillModeRemoved 默认值,动画开始前和动画结束后,动画对layer都没有影响,动画结束后,layer会恢复到动画开始前的状态

       kCAFillModeForwards 当动画结束后,layer会保持动画最后的显示状态

       kCAFillModeBackwards 在动画开始前,只需要将动画加入了一个layer, layer便立即进入动画的初始状态并等待动画的开始

       kCAFillModeBoth 上面两个的合成,动画加入后开始前,layer便处于动画初始状态,动画结束后layer保持动画最后的状态

         */

       base.fromValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];//开始点

       base.toValue =[NSValue valueWithCGPoint:CGPointMake(100, 100)];//要移动到得点

       base.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];//时间控制函数

    /*

    kCAMediaTimingFunctionLinear//线性匀速

    kCAMediaTimingFunctionEaseIn//渐进

    kCAMediaTimingFunctionEaseOut//渐出

    kCAMediaTimingFunctionEaseInEaseOut//渐进检出

    */

    base.calculationMode =kCAAnimationDiscrete; //物体在每个子路径下是跳着走还是匀速走即 关键帧中间的值是怎么被计算的

    /*

    kCAAnimationLinear//线性,默认

    kCAAnimationDiscrete//离散,无中间过程,但keyTimes设置的时间依旧生效,物体跳跃地出现在各个关键帧上

    kCAAnimationPaced//平均,keyTimes跟timeFunctions失效

    kCAAnimationCubic//平均,同上

    kCAAnimationCubicPaced//平均,同上

    */

    关键帧动画

    (1)按照帧进行动画

    CAKeyframeAnimation *keyframe = [CAKeyframeAnimation animationWithKeyPath:@"position”];

    keyframe.values = @[[NSValue valueWithCGPoint:point1],[NSValue valueWithCGPoint:point2]];//按照数组里面的点进行动画

    //values指明整个动画过程中的关键帧点,需要注意的是,起点必须作为values的第一个值

    (2)按照路径进行动画 事例

    //path指定整个动画所经过的路径的。需要注意的是,values与path是互斥的,当values与path同时指定时,path会覆盖values,即values属性将被忽略

    CAKeyframeAnimation *keyAn = [CAKeyframeAnimation animationWithKeyPath:@"position"];

    keyAn.duration  = 5;

    CGMutablePathRef path = CGPathCreateMutable();

    //起始点

    CGPoint startPoint = imageV.center;

    //切点 随机生成

    CGPoint cp =  [self random];

    CGPathMoveToPoint(path, NULL, startPoint.x, startPoint.y);

    CGPathAddQuadCurveToPoint(path, nil, cp.x,cp.y, p.x, p.y);

    keyAn.path = path;

    //添加

    [imageV.layer addAnimation:keyAn forKey:@"ss"];

    //释放

    CGPathRelease(path);

    动画组

    CAAnimationGroup

    group.animations//把动画放到组中

    相关文章

      网友评论

        本文标题:CABasicAnimation

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