iOS界面物理因素的使用

UI Dynamics是UIKit的一个新组成部分,它向iOS中的仕途提供了与物理学有关的功能和动画。

在界面中实现一个view(球)的重力下落和碰撞

在界面中实现一个view的下落和碰撞,首先,要想实现这些物理因素的效果,要有一个来实现效果的东西——UIDynamicAnimator,直接上代码了:

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var ball: UIView! // xib拖出来的一个view,是个球

    var dynamicAnimator: UIDynamicAnimator! // 控制器中有一个dynamicAnimator,用来作为物理因素的执行者

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        ball.layer.cornerRadius = 50.0 // 把view做成一个球(强迫症)
        
        // 初始化这个animator,初始化的时候用的是一个关联的view
        // 这里用的是所有控件的父view,这个父view我的理解是执行所有物理因素动画的所有者和执行者
        dynamicAnimator = UIDynamicAnimator.init(referenceView: self.view)
       
        // 为ball设置一个重力的行为,并且添加到animator中去
        let gravityBehavior = UIGravityBehavior.init(items: [self.ball])
        dynamicAnimator.addBehavior(gravityBehavior)

        // 为ball添加一个碰撞的行为,也添加到animator中去
        let collisionBehavior = UICollisionBehavior.init(items: [self.ball])
        collisionBehavior.translatesReferenceBoundsIntoBoundary = true // 设定边界在这个碰撞行为相关的坐标系中是生效的
        dynamicAnimator.addBehavior(collisionBehavior)
    }
}

吸附UI

这个也是个behavior,跟重力那些一样,可以让界面元素吸附到某一个点去

// 这个可以在比如点击手势的时候,让一个指定的界面元素移动到那个位置之类的情况
let snap = UISnapBehavior.init(item: self.ball , snapTo: aPoint )
 dynamicAnimator.addBehavior(snap)

你可能感兴趣的:(iOS界面物理因素的使用)