zoukankan      html  css  js  c++  java
  • 第六课——UIDynamicAnimator

    今天我们要学习UIDynamicAnimator 仿真物理学 。

    UIKit 力学(Dynamics) 和动态效果(Motion Effects) 。
    创建力学基本流程:
    1. 创建运动管理
    2. 创建运动行为(如gravity、collision),运动行为添加运动物体:即需要指定具体物体(具体物体,具体行为)
    3. 当需要使用运动物体的某种行为,就用运动管理添加运动行为
    4. 一般还要注意remove
    完整代码:

    import UIKit

    class ViewController: UIViewController {

        var animator: UIDynamicAnimator?

        

        override func viewDidLoad() {

            super.viewDidLoad()

            //下落的方块

            let square = UIView(frame: CGRect(x: 120, y: 50, 80, height: 80))

            square.backgroundColor = UIColor.cyan

            self.view.addSubview(square)

            //边界:栏杆

            let barrier = UIView(frame: CGRect(x: 0, y: 350, 140, height: 25))

            barrier.backgroundColor = UIColor.red

            self.view.addSubview(barrier)

            

            

            //创建运动管理

            animator = UIDynamicAnimator(referenceView: self.view)

            //创建运动行为:gravity、collision——>需要指定具体物体(具体物体,具体行为)

            let gravity = UIGravityBehavior(items: [square])

            let collision = UICollisionBehavior(items: [square])

            let elastic = UIDynamicItemBehavior(items: [square])

            //添加边界(不可见)——而不是barrier(它只是给人以视觉上的边界)

            let right = CGPoint(x: barrier.frame.origin.x + barrier.frame.size.width, y: barrier.frame.origin.y)    //而left是barrier.frame.orign,这两个都是CGPoint,就只有x和y属性

            //将参考视图(父视图)的边界作为碰撞边界

            collision.translatesReferenceBoundsIntoBoundary = true

            //将barrier作为碰撞边界

            collision.addBoundary(withIdentifier: "aa" as NSCopying, from: barrier.frame.origin, to: right)

            //实现弹性效果

            elastic.elasticity = 1.12

            

            

            animator?.addBehavior(gravity)

            animator?.addBehavior(collision)

            animator?.addBehavior(elastic)

        }

      

    }

  • 相关阅读:
    IntelliJ IDEA设置JVM运行参数
    IntelliJ IDEA 乱码解决方案 (项目代码、控制台等)
    188.索引与视图
    187.数据库操作
    186.元素
    185.流程设计
    184.数据操纵语言DML
    改变linux shell前景色和背景色
    Centos文本方式安装情况下lvm分区的创建
    深入理解计算机系统第二版习题解答CSAPP 2.20
  • 原文地址:https://www.cnblogs.com/quanxi/p/6115331.html
Copyright © 2011-2022 走看看