初窥UIKit Dynamics_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 初窥UIKit Dynamics

初窥UIKit Dynamics

 2013/9/24 17:04:47  scorpiozj  博客园  我要评论(0)
  • 摘要:原文来自这里。iOS7中可以方便的给物体添加动态物理特性,主要使用到UIDynamicAnimator,UIDynamicBehavior以及实现了UIDynamicItem协议的对象。在iOS7中,UIView和UICollectionViewLayoutAttributes是默认实现了UIDynamicItem的。我们先看看三者的关系:UIDynamicAnimator首先通过referenceview来初始化,referenceview主要提供动画的场地坐标
  • 标签:

原文来自这里。

 

iOS7中可以方便的给物体添加动态物理特性,主要使用到UIDynamicAnimator,UIDynamicBehavior以及实现了UIDynamicItem协议的对象。在iOS7中,UIView和UICollectionViewLayoutAttributes是默认实现了UIDynamicItem的。我们先看看三者的关系:class="alignnone size-full wp-image-101" src="/Upload/Images/2013092417/2010940D3F8B0B32.jpg" alt="Screen Shot 2013-09-18 at 2.07.54 PM" width="751" height="677" />

UIDynamicAnimator首先通过reference view来初始化,referenceview主要提供动画的场地坐标,UIDynamicBehavior通过要生成动画的view来生成,然后添加到UIDynamicAnimator。 Animator可以添加多个Behavior(但某些类型的behavior不能重复添加),Behavior也可以包含多个view,view同时也可以与多个behavior相联系。因此,大致的实现逻辑:

  1. 初始化UIDynamicAnimator:需要确定reference view
  2. 生成所需要的Dynamic Behaviors
  3. 将Behaviors添加到Animator中

iOS7提供了一些封装好的behavior,有 gravtivity,push,collision,snap和attachment。通过API文档,上手应该很容易。我自己做了个例子,基本就是一些基本功能的实现,有兴趣的可以看看。

在behavior中可以指定“力”的大小和方向。在现实生活中: 1N=1kg·m/s^2,而在UIKit中,1N定义为:

Accelerate a (100,100) view to 100 p/s^2

简单说就是将100×100大小的view加速到 100p/s^2所需要的“力”。

UIGravityBehavior

可以指定引力的大小和方向,注意同一个behavior不要重复添加

UICollisionBehavior

可以设置碰撞的items,路径或边界,有3种碰撞模式:

  1. 选中的items之间碰撞
  2. 和设定的boundary边界碰撞
  3. 包含上述所有的碰撞

UIAttachmentBehavior

可以选择锚点和item的重心偏移;并且可以设置阻尼(弹性系数),频率等

UISnapBehavior

snap可以将item移动到指定位置,可以设定阻尼

UIPushBehavior

可以设置矢量推力的方向和大小,还有力的作用点,有两种模式

  1. UIPushBehaviorModeContinuous:力持续的施加
  2. UIPushBehaviorModeInstantaneous:力施加后就消失
除了以上基本的几种behavior,我们也可以自行实现UIDynamicItem 协议来自定义我们所需的动画。 2013-09-17 更多高级用法,待续。
  • 相关文章
发表评论
用户名: 匿名