核心动画

iOS提供了相应的核心动画类CABasicAnimation,CAKeyframeAnimation,我们可以通过设置这些类的相关属性来实现我们所需要的动画效果

首先,创建一个做动画的UIView

var myView = UIView()
myView.frame = CGRect(x: self.view.center.x - 100,y: 200,width: 200,height: 200)
        myView.backgroundColor = UIColor.green
        self.view.addSubview(myView)

设置CABasicAnimation动画

//缩放动画
        let scaleAnimate = CABasicAnimation(keyPath: "transform.scale")
        //起始帧
        scaleAnimate.fromValue = 1.0
        //结束帧
        scaleAnimate.toValue = 1.5
        //回放动画
        scaleAnimate.autoreverses = true
        //动画次数
        scaleAnimate.repeatCount = MAXFLOAT
        //动画时间
        scaleAnimate.duration = 1.0

        //旋转动画
        let opaqueAnimate = CABasicAnimation(keyPath:"transform.rotation")
        opaqueAnimate.fromValue = 0
        opaqueAnimate.toValue = Double.pi * 2
        opaqueAnimate.autoreverses = true
        opaqueAnimate.repeatCount = MAXFLOAT
        opaqueAnimate.duration = 1.0

        //添加动画
        myView.layer.add(scaleAnimate, forKey: "scaleAnimate")
        myView.layer.add(opaqueAnimate, forKey: "rotationAnimate")

设置CAKeyframeAnimation动画

let keyAnimate = CAKeyframeAnimation(keyPath: "position")

        //设置关键帧,动画的轨迹
        let value0 = NSValue(cgPoint: myView.layer.position)
        let value1 = NSValue(cgPoint: CGPoint(x: myView.layer.position.x, y: myView.layer.position.y + 200))
        let value2 = NSValue(cgPoint: CGPoint(x: myView.layer.position.x - 150, y: myView.layer.position.y + 200))
        let value3 = NSValue(cgPoint: CGPoint(x: myView.layer.position.x - 150, y: myView.layer.position.y))
        let value4 = NSValue(cgPoint: myView.layer.position)
keyAnimate.values = [value0, value1, value2, value3, value4]
        keyAnimate.autoreverses = false
        keyAnimate.repeatCount = MAXFLOAT
        keyAnimate.duration = 6.0

        myView.layer.add(keyAnimate, forKey: "keyAnimate")

运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值