9.20动画_关键帧位移

动画: 图片按照图中红色轨迹线移动:

企业微信截图_78de0b78-39bd-4060-b58c-f72cb0b88df9.png

位移关键帧动画: 运动关键点的方式制作位移动画; CAAnimationDelegate

import UIKit
// 遵循CAAnimationDelegate代理:
class ViewController: UIViewController, CAAnimationDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        yeAnimationForPath()
    }
    
    func yeAnimationForPath(){
        // 显示: 测试:
        let imageView = UIImageView(frame: CGRect(x: 40, y: 120, width: 84, height: 84))
        imageView.image = UIImage(named: "star")
        self.view.addSubview(imageView)
        
        //--- 9.20创建位移关键帧动画
        /// 实例化一个关键帧动画, 可为层属性指定关键路径,以产生动画:
        let animation = CAKeyframeAnimation(keyPath: "TyePosition")
        animation.delegate = self
        animation.duration = 5.0 //总时长 5s;
        
        // 动画路径点:
        let point1 = CGPoint(x: 40, y: 120)
        let point2 = CGPoint(x: 340, y: 120)
        let point3 = CGPoint(x: 60, y: 360)
        let point4 = CGPoint(x: 340, y: 360)
        
        /// 创建动画的值数组:
        animation.values = [NSValue(cgPoint: point1), NSValue(cgPoint: point2),
                            NSValue(cgPoint: point3), NSValue(cgPoint: point4)] //路径点;
      
        /// 动画的关键点时间:
        animation.keyTimes = [NSNumber(value: 0.0), NSNumber(value: 0.4),
                              NSNumber(value: 0.6), NSNumber(value: 1.0)] //到达对应位置点的时长比(0.4*5=2s:从第一个点到第二个点所花费的时间);


        /// 为视图添加动画:  开始播放动画
        imageView.layer.add(animation, forKey: "TyeMove") 
    }
    

    // CAAnimationDelegate 代理方法:
    func animationDidStart(_ anim: CAAnimation) {
        print("--- 响应动画开始的事件: --")
    }

    func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {
        print("--- 响应动画结束的事件: --")
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容