目錄:[Swift]Xcode實際操做html
本文將演示UIView視圖反轉動畫的製做,並檢測其動畫結束事件。swift
即視圖在進行反轉動畫的同時,將移動到目標位置,並縮小至不可見狀態。ide
在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】post
1 import UIKit 2 3 class ViewController: UIViewController { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 // Do any additional setup after loading the view, typically from a nib. 8 9 //建立一個位置在(50,50),尺寸爲(220,320)的顯示區域 10 let rect = CGRect(x: 50, y: 50, width: 220, height: 320) 11 //初始化一個圖像視圖,並設置其位置和尺寸信息 12 let imageView = UIImageView(frame: rect) 13 14 //從項目資源文件中加載一張圖片 15 let image = UIImage(named: "Picture") 16 //給圖像視圖指定須要顯示的圖片 17 imageView.image = image 18 //設置圖像視圖的標識值,以方便後期對圖像視圖的調用 19 imageView.tag = 1 20 21 //將圖像視圖,添加到當時視圖控制器的根視圖 22 self.view.addSubview(imageView) 23 24 //初始化一個按鈕對象,當點擊按鈕時,開始播放動畫 25 let button = UIButton(type: UIButton.ButtonType.system) 26 //設置按鈕對象的位置爲(50,400),尺寸爲(220,44) 27 button.frame = CGRect(x: 50, y: 400, width: 220, height: 44) 28 //設置按鈕對象的背景顏色爲橙色 29 button.backgroundColor = UIColor.orange 30 //設置按鈕對象的標題文字 31 button.setTitle("Tap it", for: .normal) 32 //給按鈕對象,綁定點擊事件 33 button.addTarget(self, action: #selector(ViewController.playAnimation), for: UIControl.Event.touchUpInside) 34 35 //將按鈕對象,添加到當前視圖控制器的根視圖 36 self.view.addSubview(button) 37 } 38 39 //建立一個方法,用來響應按鈕的點擊事件 40 @objc func playAnimation() 41 { 42 //發出開始動畫的請求, 43 //標誌着視圖動畫塊的開始。 44 //在它和提交動畫請求之間,能夠定義動畫的各類展示方式 45 UIView.beginAnimations(nil, context: nil) 46 //設置動畫的播放速度爲淡入淡出 47 UIView.setAnimationCurve(.easeInOut) 48 //設置動畫的時長爲5秒 49 UIView.setAnimationDuration(5) 50 //設置動畫從視圖當前狀態開始播放 51 UIView.setAnimationBeginsFromCurrentState(true) 52 53 //經過標識值,找到上方代碼種建立的圖像視圖做爲動畫的載體 54 let view = self.view.viewWithTag(1) 55 //設置動畫類型爲翻轉動畫 56 UIView.setAnimationTransition(.flipFromRight, for: view!, cache: true) 57 //設置視圖的目標位置爲(50,50),目標尺寸爲(0,0)。 58 //即視圖在進行反轉動畫的同時,將移動到目標位置,並縮小至不可見狀態 59 view?.frame = CGRect(x: 50, y: 50, width: 0, height: 0) 60 61 //同時設置動畫的代理對象,爲當前的視圖控制器 62 UIView.setAnimationDelegate(self) 63 //當動畫結束後,在控制檯打印輸出日誌 64 //設置動畫結束時執行的方法 65 UIView.setAnimationDidStop(#selector(ViewController.animationStop)) 66 //調用視圖的提交動畫方法,標誌着動畫塊的結束 67 UIView.commitAnimations() 68 } 69 70 //建立一個方法,用來響應動畫結束事件 71 @objc func animationStop() 72 { 73 //當動畫結束後,在控制檯打印輸出日誌 74 print("Animaton stop.") 75 //同時將圖像視圖,從父視圖種移除 76 self.view.viewWithTag(1)?.removeFromSuperview() 77 } 78 79 override func didReceiveMemoryWarning() { 80 super.didReceiveMemoryWarning() 81 // Dispose of any resources that can be recreated. 82 } 83 }