UIKit Dynamics (一) 概述

UIKit Dynamics (一) 概述
UIKit Dynamics (二) 重力
UIKit Dynamics (三) 碰撞
UIKit Dynamics (四) 急停
UIKit Dynamics (五) 施力

为什么要使用 UIKit Dynamics

苹果已经提供了强大的动画库 Core Animation,几乎可以实现我们想要的全部动画效果,为什么还要去使用 UIKit Dynamics 呢?
首先,UIKit Dynamics 提供了一套很容易使用的 API,可以用十几行代码实现一个复杂的物理动画,同样的功能使用 Core Animation 则可能需要上百行。
其次,Core Animation 的面向对象是 CALayer,而 UIKit Dynamics 是面对的 UIView,就如 UIView.animate 动画 API 的一样更加直接地操作屏幕上的 view 元素。

UIKit Dynamics 简介

UIKit Dynamics 是 iOS 7 中引入的新特性,为了提供更接近真实世界效果的动画,大概可以理解为 UIKit 中的物理引擎。UIKit Dynamics 使用时的架构如下:

UIKit Dynamics (一) 概述_第1张图片
Architecture
  1. 架构中的最顶层是一个 UIDynamicAnimator,只有添加进去的动画才能执行。创建 UIDynamicAnimator 需要通过一个 ReferenceView,即所有物理规则的容器。
  2. 创建好的 UIDynamicAnimator 中可以添加多个 UIDynamicBehavior,即物理规则,包括重力,碰撞,弹簧等效果。
  3. 每个 UIDynamicBehavior 中可以添加过个 UIDynamicItem,即遵循该物理规则的视图。UIDynamicItem 是一个协议,UIView 和 UICollectionViewLayoutAttributes 都实现了这个协议。

关于 Behavior,UIKit 中最底层的是 UIDynamicBehavior,提供了很多基础通用的属性,比如直接设置视图的速度,或者视图的材质比如摩擦,弹性等。而在其之上封装了一些高级的 Behavior,比如:

  • UIGravityBehavior:模拟重力,自然下落
  • UICollisionBehavior:模拟碰撞,自定义好碰撞边界即可模拟
  • UIAttachmentBehavior:模拟附件,遵循它的视图运动时会相互影响
  • UISnapBehavior:模拟停止?视图迅速移动到目标点,并在该点进行一个弹簧抖动的动画
  • UIPushBehavior:模拟受力,给视图一个力让它运动

后续的文章中将会使用一个 demo 来进行介绍,项目地址

你可能感兴趣的:(UIKit Dynamics (一) 概述)