一、前言
记得第一次接触UIDynamic的时候,是在一个学生的项目里看到的,当时觉得这玩意儿挺有意思,实现的效果也比较炫酷,简单的看了看官方文档,由于教学任务安排,也没有过多的时间去研究,现在终于闲下来了,在网上找了大量的资料,也参考整理了一些,这里,就将我了解到的分享给大家。
二、简介
1、什么是UIDynamic?
首先,我们要知道什么是UIKit力学,UIKit力学(UIDynamic)是iOS 7新推出的技术,隶属于UIKit框架,它可以使得视图对象具有真实的物理运动效果,我们可理解为是一种物理引擎,能模拟和仿真现实生活中的物理现象,比如重力、弹性、碰撞等等。
2、为什么学习UIDynamic?
1)物理引擎广泛用于游戏开发,比如经典的成功案例“愤怒的小鸟”。
2)可在远离物理公式的情况下,实现炫酷的物理仿真效果。
3)提高开发效率,诞生更多优秀的物理仿真游戏。
3、开源的2D物理引擎有哪些?
著名的开源物理引擎有 Box2D 和 Chipmunk,事实上,UIKit 力学就是基于 Box2D 物理引擎的。
4、UIDynamic 使用步骤
要想使用UIDynamic来实现物理仿真效果,大致的步骤如下:
1)创建一个物理仿真器,并设置仿真的范围(参照视图);
2)创建相应的物理仿真行为,并添加物理仿真元素;
3)将物理仿真行为添加到物理仿真器中,执行仿真效果;
三、掌握三大概念
1、物理仿真元素 Dynamic Item
谁要进行物理仿真?
1)注意:
不是任何对象都能做物理仿真元素。
不是任何对象都能进行物理仿真。
2)哪些对象才能做物理仿真元素?
任何遵守了UIDynamicItem协议的对象。
UIView默认已经遵守了UIDynamicItem协议,因此任何UI控件都能做物理仿真。
UICollectionViewLayoutAttributes类默认也遵守UIDynamicItem协议。
2、物理仿真行为 Dynamic Behavior
执行怎样的物理仿真效果?怎样的动画效果?
1)UIDynamic提供了以下几种物理仿真行为
UIGravityBehavior:重力行为
UICollisionBehavior:碰撞行为
UISnapBehavior:捕捉行为
UIPushBehavior:推动行为
UIAttachmentBehavior:附着行为
UIDynamicItemBehavior:动力元素行为
2)物理仿真行为须知:
上述所有物理仿真行为都继承自UIDynamicBehavior。
所有的UIDynamicBehavior都可以独立进行。
组合使用多种行为时,可以实现一些比较复杂的效果
3、物理仿真器 Dynamic Animator
让物理仿真元素执行具体的物理仿真行为?
1)物理仿真器须知:
它可以让物理仿真元素执行物理仿真行为。
它是UIDynamicAnimator类型的对象。
2)初始化
// 1、初始化方法,view参数:是一个参照视图,表示物理仿真的范围。
public init(referenceView view: UIView)
3)UIDynamicAnimator的常见方法
// 1、添加1个物理仿真行为
public func addBehavior(behavior: UIDynamicBehavior)
// 2、移除1个物理仿真行为
public func removeBehavior(behavior: UIDynamicBehavior)
// 3、移除之前添加过的所有物理仿真行为
public func removeAllBehaviors()
4)UIDynamicAnimator的常见属性
referenceView:参照视图
behaviors:添加到物理仿真器中的所有物理仿真行为
running:是否正在进行物理仿真
delegate:代理对象(能监听物理仿真器的仿真过程,比如开始和结束)