编辑: hgtbkwd 2012-12-12
UIKit Dynamics 苹果公司在 iOS

7 版本中引入了 UIKit Dynamics 框架,使用该框架,开发者可以很容易 地将真实的物理模拟动作应用在 UIView 上.

在之前的版本中,开发者只能将这种真实的动 作效果整合到部分程序中, 比如可滑动的单元格和下拉刷新动画等. 苹果公司在 iOS

7 和iOS

8 版本中向前迈进了一大步,将这些动画加入到核心 OS 库中,同时也在极力鼓励开发者使用 它们实现动画效果. UIDynamicItem 协议和支持该协议的动态元素使用户体验得到了极大提升.在程序中添 加重力、碰撞、弹跳、瞬间位移等效果变得异常简单.介绍这些动态元素的 API 很简单,且 很容易实现,应用这些功能提升用户体验易如反掌. 1.1 示例程序 示例程序(如图 1-1 所示)是一个基本的表格元素,用来展示 UIKit Dynamics 各种不同的 功能.在这个程序中一共展示了从重力感应到属性设置等

7 个效果,每个效果都会在后面小 节中详细展开介绍.除了表视图和基本的导航视图,示例程序并不包含任何专门针对 UIKit Dynamics 的功能. 注意 在同一个视图中使用 UIKit Dynamics 和自动布局可能会导致一些布局问题.通常,这是 由于自动布局与 UIKit Dynamics 争抢视图上的正确位置,导致视图出现无法预料的错位而 致.如果视图没有像预想那样呈现,开发者可以检查自动布局的相关设置来查看是否出现 了冲突.

1 第章精通 iOS 框架(第2版)

2 图1-1 简单查看一下用于展示 UIKit Dynamics 各项功能的示例程序 1.2 UIKit Dynamics 介绍 UIKit Dynamics 是一组新的类和方法,最初是在 iOS

7 版本的 iDevices 中引入的.简单 来说,UIKit Dynamics 通过在 UIView 视图中整合现实中的一些行为,提供了一种易于实现 的方法来提升应用的用户体验.用最简短的术语来解释 UIKit Dynamics,其实它就是 UIKit 的基础物理引擎,不过它并不像传统的物理引擎一样是专为游戏开发而设计的.苹果公司提 供了一些游戏框架,其中都包含了物理引擎,比如 SpriteKit. 当程序创建一个新的 UIDynamicAnimator 并将其添加到 UIView 中时,动态行为就会被 激活.每个动画元素都可以对其属性和行为进行自定义,比如重力、碰撞检测、密度、摩擦 力以及下面小节中将介绍的额外一些属性. 一共有

6 个附加类可以支持 UIDynamicAnimator 元素的自定义设置,分别是 UIAttachmentBehavior、UICollisionBehavior、UIDynamicItemBehavior、UIGravityBehavior、 UIPushBehavior 和UISnapBehavior.每个元素都允许指定自定义属性并且会在相应的视图中 以真实的行为和动画反映出来. 1.3 UIKit Dynamics 具体实现 创建一个新的动画并将它添加到一个视图中,只需要两行代码就可以实现上述操作.示 例中 self.view 对象即为将要使用 UIKit Dynamics 行为的对象. 每一个特定的动态元素必须使 用addBehavior:方法添加到动画对象中. UIDynamicAnimator *animator = [[UIDynamicAnimatoralloc] initWithReferenceView:self.view];

第1章UIKit Dynamics

3 [animatoraddBehavior:aDynamicBehavior];

每一个 UIDynamicAnimator 都是独立的,多个动画对象可以同时运行.对于一个持续运 行的动画对象,对其的引用必须有效.当动画对象上的所有元素都处于静止状态时,动画对 象此时不执行任何计算且处于暂停状态,不过实际操作中建议将不再使用的动画对象移除. 【游戏开发者的经验】 物理模拟对于游戏开发者而言已经使用了很多年了,很多难学的课程都已经学过了.现 在物理层的处理技术已经蔓延到普通应用的开发中,下面介绍一些每位开发者都可以从中获 益的基本原则. 当向游戏或应用添加物理特性时,请采取小步推进的方式.在多个互动代码段中试图找 到出现的错误几乎是不可能的,采用越小步骤得到最终结果,程序也就越容易优化和调试. 在物理层进行处理时, 有一些限制和边界在计算机模拟中无法体现. 在1997 年发布的经 典游戏 死亡赛车 (Carmageddon)中,物理层处理是基于无上限帧率的.当计算机的处理速 度变得越来越快后,帧率得到了大幅提升,在特定的公式中通过创建变量可以得到意想不到 的结果.当把任何一种计算类型运用到物理引擎中时,需要确保其最大值和最小值都是符合 要求且经过测试的. 预见下面这种意外情况:处理碰撞事件时,当30 个对象发生重叠后,结果就会变得很扭 曲.UIKit Dynamics 可以很好地确保开发者不会出现类似对象超过边界等情况,在处理上述 碰撞场景时也能很完美地加以解决.不过当处理许多对象的复杂操作时也不能完全保证不出 现边界情况和 bug.随着使用物理引擎的增加,越来越需要进行测试和调试,要能够预料到 那些不期而遇和非常规情况下应该遵循的物理定律. 1.3.1 重力效果 重力效果被认为是最容易实现的 UIDynamicItem,同时也是实践中最常用的.苹果公司 在iOS

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题