目錄:[Swift]Xcode實際操做html
本文將演示如何經過添加運動關鍵點的方式,來製做位移動畫swift
在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】數組
1 import UIKit 2 3 //添加一個代理協議CAAnimationDelegate 4 class ViewController: UIViewController, CAAnimationDelegate { 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 // Do any additional setup after loading the view, typically from a nib. 9 10 //建立一個圖像視圖,並設置位置在(40,80),尺寸爲(64,64) 11 let imageView = UIImageView(frame: CGRect(x: 40, y: 80, width: 64, height: 64)) 12 //從項目資源文件夾加載資源,並賦予圖像視圖 13 imageView.image = UIImage(named: "star") 14 //將圖像視圖,添加到當前視圖控制器的根視圖 15 self.view.addSubview(imageView) 16 17 //初始化一個關鍵幀動畫對象, 18 //該對象提供了對對關鍵幀動畫的支持 19 //能夠爲層屬性指定關鍵路徑,使其產生相應的動畫 20 let animation = CAKeyframeAnimation(keyPath: "position") 21 22 //添加一個路徑上的四個關鍵錨點 23 let point1 = CGPoint(x: 40, y: 80) 24 let point2 = CGPoint(x: 280, y: 80) 25 let point3 = CGPoint(x: 60, y: 300) 26 let point4 = CGPoint(x: 280, y: 300) 27 28 //建立幀動畫的值數組,在動畫運行的時候, 29 //數組中的每一個值,就會被輪流進行插值使用 30 animation.values = [NSValue(cgPoint: point1), NSValue(cgPoint: point2), 31 NSValue(cgPoint: point3), NSValue(cgPoint: point4)] 32 //再建立一個數組,存儲幀動畫的關鍵時間點 33 animation.keyTimes = [NSNumber(value: 0.0), NSNumber(value: 0.4), 34 NSNumber(value: 0.6), NSNumber(value: 1.0)] 35 36 //設置關鍵幀動畫的代理對象,爲當前視圖控制器 37 animation.delegate = self 38 //設置關鍵幀動畫時長爲5秒鐘 39 animation.duration = 5.0 40 41 //給圖像視圖的層,添加關鍵幀動畫,開始動畫的播放 42 imageView.layer.add(animation, forKey: "Move") 43 } 44 45 //添加一個代理方法,用來響應動畫開始的事件 46 func animationDidStart(_ anim: CAAnimation) { 47 //在控制檯打印輸出日誌 48 print("The animation starts") 49 } 50 51 //添加一個代理方法,用來響應動畫結束的事件 52 func animationDidStop(_ anim: CAAnimation, finished flag: Bool) { 53 //在控制檯打印輸出日誌 54 print("End of the animation") 55 } 56 57 override func didReceiveMemoryWarning() { 58 super.didReceiveMemoryWarning() 59 // Dispose of any resources that can be recreated. 60 } 61 }
留意動畫速度的變化。ide