OCiOS开发:UIKit 力学(UIDynamics)(一)

一、前言

记得第一次接触UIDynamic的时候,是在一个学生的项目里看到的,当时觉得这玩意儿挺有意思,实现的效果也比较炫酷,简单的看了看官方文档,由于教学任务安排,也没有过多的时间去研究,现在终于闲下来了,在网上找了大量的资料,也参考整理了一些,这里,就将我了解到的分享给大家。

二、简介

1、什么是UIDynamic?

首先,我们要知道什么是UIKit力学,UIKit力学(UIDynamic)是iOS 7新推出的技术,隶属于UIKit框架,它可以使得视图对象具有真实的物理运动效果,我们可理解为是一种物理引擎,能模拟和仿真现实生活中的物理现象,比如重力、弹性、碰撞等等。

2、为什么学习UIDynamic?

1)物理引擎广泛用于游戏开发,比如经典的成功案例“愤怒的小鸟”。

2)可在远离物理公式的情况下,实现炫酷的物理仿真效果。

3)提高开发效率,诞生更多优秀的物理仿真游戏。

3、开源的2D物理引擎有哪些?

著名的开源物理引擎有 Box2DChipmunk,事实上,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:代理对象(能监听物理仿真器的仿真过程,比如开始和结束)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值