本文转载自:破船之家

本文地址:iOS7新特征汇总[05]初窥UIKit动力(UIKit Dynamics)

QQ20130615-6

此图来此WWDC视频

小引

通过之前的4篇文章,笔者把iOS7中的涉及到的一些新特征做了一个简单的介绍。本文将带领大家初窥新特征里面的一个topic:UIKit动力(UIKit Dynamics)。

注1:关于UIKit Dynamics的中文名称:我在这里叫做UIKit动力,也有人叫UIKit动力模型和UIKit动态,总感觉怪怪的——所以大家在看到的时候不要在意即可。
注2:今天有开发者提起iOS7 beta还处于苹果的NDA(Non-Disclosure Agreement)状态,也就是说目前关于iOS7 beta的任何内容除了官方公开发表的信息外,作为开发者最多只能在苹果的开发者论坛上进行讨论交流,禁止在公开场合谈论关于iOS7 beta的信息。关于NDA感觉国外的意识比较好,就跟版权意识一样。由此笔者也在这里友情提醒一下:读者单纯的看本系列文章即可,在iOS7 release之前,保持沉默状态。
注3:本文在写作的时候参考了如下一些内容(具体内容请登录苹果开发者网站查阅):

  1. WWDC 2013 session 206 — Getting Started with UIKit Dynamics
  2. UIDynamicAnimator Class Reference
  3. UIDynamicAnimatorDelegate Protocol Reference
  4. UIDynamicBehavior Class Reference
  5. UIDynamicItem Protocol Reference
  6. UIDynamicItemBehavior Class Reference
  7. UIKit Dynamics Catalog(Sample Code)

UIKit动力简介

QQ20130615-5

code

什么是UIKit动力?—— 一句话:UIKit动力提供了一个模拟真实世界中力学相关的动画和交互系统。比如重力、碰撞和吸附等。UIKit动力具有可组合、可重用和声明式的特点。

在程序中利用UIKit提供的接口来实现力学行为,可以减少80%的代码量。

UIKit动力架构

QQ20130616-8

如上图所示,UIKit动力系统中,涉及到如下4个内容:

QQ20130616-9UIDynamicAnimator:UIDynamicAnimator介于iOS图形引擎和动力项(View)之间,具有如下功效:

  • 提供动力行为的上下文
  • 根据ref view确定坐标系
  • 控制动力引擎
  • 维护着动力行为的状态

UIDynamicAnimatorDelegate是与UIDynamicAnimator相关的一个delegate。主要用于动力行为被启动或者暂定时,做出的回应。也就是说,在动力行为运行期间,有两个事件(启动和暂定)可供我们使用。

QQ20130616-10UIDynamicBehavior:主要用来描述动力的行为。在iOS7中,默认提供了如下动力行为:

动力行为可以在任意时间内进行添加或移除。另外动力行为可以是组合的,也可以被继承。

注意:这些动力行为是在二维空间进行的。

Reference View:该用是用来初始化Animator用的,它的作用是给动力行为提供坐标系。

View:在UIKit动力中,又称为动力项(dynamic item)。动力项是遵循UIDynamicItem协议的任意对象(可以是SDK中默认提供的,或者开发者自定义的)。在iOS7 beta中,View已经遵循了该协议,所以一般也会将View当做动力项——动力行为实际针对的对象。

代码示例

下面笔者就通过一个例子,演示如何对一个view施加重力行为(UIGravityBehavior)。

上面介绍了一大堆,实际使用过程可能没那么复杂,不过原理才是最重要的。

新建一个Single View Application模板工程:BVGravityBehavior,在工程中,有如下属性:

@property (nonatomic, weak) IBOutlet UIImageView *square1;
@property (nonatomic) UIDynamicAnimator* animator;

另外还有两个方法:

// 开始重力行为
- (IBAction)startGravity:(id)sender
{self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];UIGravityBehavior* gravityBeahvior = [[UIGravityBehavior alloc] initWithItems:@[self.square1]];[self.animator addBehavior:gravityBeahvior];
}
// 停止重力行为
- (IBAction)stopGravity:(id)sender
{[self.animator removeAllBehaviors];
}

运行程序,效果如下(如图没看到gif动画效果,点击下图,在新窗口中可以看到效果):

1

也可以停止当前的动力行为:在重力行为运行过程中,如果点击停止,就可以停止重力行为,view的状态为停止前的状态。

2

代码下载

代码下载

iOS7新特征汇总[05]初窥UIKit动力(UIKit Dynamics)相关推荐

  1. ios6:新特征介绍

    关于ios6的一些东西,找到几个不错的博客:iOS6新特征:参考资料和示例汇总 http://www.onevcat.com/tag/wwdc/ 本文来自:iOS6新特征:新特征介绍 下面我们分别来看 ...

  2. 初窥Xcode4 -- Xcode4主题样式、快捷键等常用设置

    今天晚上开始使用Xcode4,初窥历程如下. 一.下载安装Xcode4 因为我需要让Xcode4和老版本共存,在安装Xcode4时选择其他安装路径,安装成功后在xcode4安装目录下改名Xcode.a ...

  3. [初窥目标检测]——《目标检测学习笔记(2):浅析Selective Search论文——“Selective Search for object recognition”》

    [初窥目标检测]--<目标检测学习笔记(2):浅析Selective Search论文--Selective Search for object recognition> 本文介绍 前文我 ...

  4. Three.js初窥

    随着当今时期前端地愈来愈普及,页面实现的效果真的是越来越棒! 随着数字图像处理.人工智能技术的发展,展示给用户的视觉效果便不局限于平面的2D视觉效果,开始注重于全方位的3D立体展示效果,力求对于商品的 ...

  5. OBJECT_METHOD初窥

    一.  背景:Windows NT 的对象机制 Windows NT系统将各种资源以对象的方式进行组织和管理.虽然Windows NT内核使用C语言和汇编语言编写的,本身并未使用到C++中的面向对象机 ...

  6. ML之FE:基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征衍生(手动设计新特征、利用featuretools工具实现自动特征生成)

    ML之FE:基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征衍生(手动设计新特征.利用featuretools工具实现自动特征生成) 目录 基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征 ...

  7. java aspectj_初窥AspectJ

    AspectJ可以说是Java中当之无愧的黑魔法.说它是黑魔法,一方面是因为它很强大,能够解决一些传统编程方法论解决不了的问题,而另一方面,它也相当的晦涩,有着比较陡峭的学习曲线. 本文将带大家探索下 ...

  8. OpenJDK-11的新特征

    OpenJDK-11的新特征 JDK 11是Java SE 11平台版本11的开源参考实现,由JSR 384在Java Community Process中指定. JDK 11 于2018年9月25日 ...

  9. 初窥R(基本说明、获取帮助、工作空间、输入输出、包)

    初窥R(基本说明.获取帮助.工作空间.输入输出.包) 本篇简要介绍使用R的一些基本概念,包括基本说明.获取帮助.工作空间.输入输出,每个知识点中都会通过一个例子来练习. 一.R基本情况说明 1.R是一 ...

最新文章

  1. Mysql组复制故障恢复测试
  2. 【计算机网络】网络层 : IP 组播 ( IP 数据报传输方式 | 组播 IP 地址 | 组播 MAC 地址 | IGMP 协议 | 组播路由选择协议 )
  3. 新写的c++日志库:log4K
  4. 前端开发面试题总结之——CSS3
  5. Servlet学习笔记心得(二)
  6. 计算机认识新朋友教案,小班教案认识新朋友
  7. Guns 编辑功能实现_入门试炼06
  8. UVA 10129 Play on Words
  9. linux python 环境 png,在mint-15 linux上显示python的.png图像
  10. python编程输入,Python编程:输入变量返回nam
  11. cad相对坐标快捷键_CAD快捷键及命令大全
  12. 腾讯下载的qlv格式视频转换mp4格式方法
  13. 奇幻RPG(人物构造 与 Abstract Factory模式)
  14. PX4 FMU启动流程 1.nsh
  15. react项目运行出现进度卡住,Would you like to run the app on another port instead?
  16. 【POJ3710】Christmas Game 博弈 有限制的图上删边游戏(树形删边游戏进化1)
  17. java 时间戳 什么意思_java时间与时间戳
  18. Rocky Linux更换yum源为国内源
  19. 做网站用html好还是vue好,中大型项目用react还是vue?
  20. (二)地理信息中对地球的描述-地球的大地水准面、地球椭球体、大地基准面

热门文章

  1. 考研计算机统考408计算机学科专业基础综合真题视频课程哪里有
  2. 又一家中国企业加入RISC-V,中国力推之下必将打破ARM的垄断
  3. Openshift4 Pipeline 调优
  4. RabbitMQ学习笔记 03、交换机模式(4种)
  5. 对STIX2.0标准12个构件的解读(续)——对STIX2.0官方文档的翻译
  6. 空调如何维修保养?空调保养和维修技巧
  7. 乐视网的视频看不了了,说抱歉,你所访问的视频不存在
  8. jQuery选择器总结(选择器+元素筛选)
  9. Forwards, Backwards, May, and Must
  10. 【OpenAirInterface5g】RRC NR解析之RrcSetupComplete