zoukankan      html  css  js  c++  java
  • [Xcode 实际操作]六、媒体与动画-(12)检测UIView动画的结束事件:反转动画并缩小至不可见状态

    目录:[Swift]Xcode实际操作

    本文将演示UIView视图反转动画的制作,并检测其动画结束事件。

    即视图在进行反转动画的同时,将移动到目标位置,并缩小至不可见状态。

    在项目导航区,打开视图控制器的代码文件【ViewController.swift】

     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,  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,  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,  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 }
  • 相关阅读:
    css之深入理解padding
    css布局大杂烩
    css深入理解margin
    css之深入理解border
    css样式画各种图形
    css Sprite雪碧图
    JVM,JRE,JDK
    JAVA 遍历数组
    JAVA 得到数组的长度
    大一对软件工程
  • 原文地址:https://www.cnblogs.com/strengthen/p/10036241.html
Copyright © 2011-2022 走看看