iOS-Swift-CAKeyframeAnimation动画(UILabel左右晃动)

1.前言

CAKeyframeAnimation是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值

2.属性

keyPath : 要设置的属性

path : 路径 可用UIBezierPath,这是一个 CGPathRef  对象,默认是空的,当我们创建好CAKeyframeAnimation的实例的时候,可以通过制定一个自己定义的path来让  某一个物体按照这个路径进行动画。这个值默认是nil  当其被设定的时候  values  这个属性就被覆盖 

values:一个数组,提供了一组关键帧的值,  当使用path的 时候 values的值自动被忽略。

duration : 动画时长

repeatCount : 重复次数

calculationMode : 动画计算方式

kCAAnimationLinear     :   默认差值

kCAAnimationDiscrete   :   逐帧显示

kCAAnimationPaced      :   匀速 无视keyTimes

kCAAnimationCubic      :   keyValue之间曲线平滑 可用 tensionValues,continuityValues,biasValues 调整

kCAAnimationCubicPaced :   keyValue之间平滑差值 无视keyTimes

rotationMode : 旋转方式

kCAAnimationRotateAuto         :   自动

kCAAnimationRotateAutoReverse  :   自动翻转 不设置则不旋转

3.示例

UILabel左右晃动,类似于手机输入密码错误,提示密码错误,并左右晃动

func shake(){
        let kfa = CAKeyframeAnimation()
        kfa.keyPath = "transform.translation.x"
        let s = 16
        kfa.values = [-s,0,s,0,-s,0,s,0]
        kfa.duration = 0.1
        kfa.repeatCount = 2
        kfa.isRemovedOnCompletion = true
        self.add(kfa, forKey: "shake")
        
    }

设置calculationMode属性,得到不同的动画

func configCircleKeyAnimation(){
        let animation = CAKeyframeAnimation()
        animation.keyPath = "position"
        animation.path = UIBezierPath(ovalIn: CGRect(x: 20, y: 200, width: 200, height: 200)).cgPath
        animation.duration = 0.5
        animation.isAdditive = true
        animation.repeatCount = 3
        /*
         kCAAnimationLinear     :   默认差值
         kCAAnimationDiscrete   :   逐帧显示
         kCAAnimationPaced      :   匀速 无视keyTimes
         kCAAnimationCubic      :   keyValue之间曲线平滑 可用 tensionValues,continuityValues,biasValues 调整
         kCAAnimationCubicPaced :   keyValue之间平滑差值 无视keyTimes
         */
        animation.calculationMode = kCAAnimationPaced //无视keytimes
        /*
         kCAAnimationRotateAuto         :   自动
         kCAAnimationRotateAutoReverse  :   自动翻转
         不设置则不旋转
         */
        animation.rotationMode = kCAAnimationRotateAuto
        
        self.add(animation, forKey: "position")
    }

4.效果图



5.DEMO下载

swift版: http://download.csdn.net/detail/u014220518/9690214

oc版:http://download.csdn.net/detail/u014220518/9690594










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值