iOS7新特征汇总[05]初窥UIKit动力(UIKit Dynamics)
本文转载自:破船之家
本文地址:iOS7新特征汇总[05]初窥UIKit动力(UIKit Dynamics)
此图来此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:本文在写作的时候参考了如下一些内容(具体内容请登录苹果开发者网站查阅):
- WWDC 2013 session 206 — Getting Started with UIKit Dynamics
- UIDynamicAnimator Class Reference
- UIDynamicAnimatorDelegate Protocol Reference
- UIDynamicBehavior Class Reference
- UIDynamicItem Protocol Reference
- UIDynamicItemBehavior Class Reference
- UIKit Dynamics Catalog(Sample Code)
UIKit动力简介
什么是UIKit动力?—— 一句话:UIKit动力提供了一个模拟真实世界中力学相关的动画和交互系统。比如重力、碰撞和吸附等。UIKit动力具有可组合、可重用和声明式的特点。
在程序中利用UIKit提供的接口来实现力学行为,可以减少80%的代码量。
UIKit动力架构
- 提供动力行为的上下文
- 根据ref view确定坐标系
- 控制动力引擎
- 维护着动力行为的状态
UIDynamicAnimatorDelegate是与UIDynamicAnimator相关的一个delegate。主要用于动力行为被启动或者暂定时,做出的回应。也就是说,在动力行为运行期间,有两个事件(启动和暂定)可供我们使用。
QQ20130616-10UIDynamicBehavior:主要用来描述动力的行为。在iOS7中,默认提供了如下动力行为:
- UIAttachmentBehavior
- UICollisionBehavior
- UIDynamicItemBehavior
- UIGravityBehavior
- UIPushBehavior
- UISnapBehavior objects
动力行为可以在任意时间内进行添加或移除。另外动力行为可以是组合的,也可以被继承。
Reference View:该用是用来初始化Animator用的,它的作用是给动力行为提供坐标系。
代码示例
下面笔者就通过一个例子,演示如何对一个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动画效果,点击下图,在新窗口中可以看到效果):
也可以停止当前的动力行为:在重力行为运行过程中,如果点击停止,就可以停止重力行为,view的状态为停止前的状态。
代码下载
iOS7新特征汇总[05]初窥UIKit动力(UIKit Dynamics)相关推荐
- ios6:新特征介绍
关于ios6的一些东西,找到几个不错的博客:iOS6新特征:参考资料和示例汇总 http://www.onevcat.com/tag/wwdc/ 本文来自:iOS6新特征:新特征介绍 下面我们分别来看 ...
- 初窥Xcode4 -- Xcode4主题样式、快捷键等常用设置
今天晚上开始使用Xcode4,初窥历程如下. 一.下载安装Xcode4 因为我需要让Xcode4和老版本共存,在安装Xcode4时选择其他安装路径,安装成功后在xcode4安装目录下改名Xcode.a ...
- [初窥目标检测]——《目标检测学习笔记(2):浅析Selective Search论文——“Selective Search for object recognition”》
[初窥目标检测]--<目标检测学习笔记(2):浅析Selective Search论文--Selective Search for object recognition> 本文介绍 前文我 ...
- Three.js初窥
随着当今时期前端地愈来愈普及,页面实现的效果真的是越来越棒! 随着数字图像处理.人工智能技术的发展,展示给用户的视觉效果便不局限于平面的2D视觉效果,开始注重于全方位的3D立体展示效果,力求对于商品的 ...
- OBJECT_METHOD初窥
一. 背景:Windows NT 的对象机制 Windows NT系统将各种资源以对象的方式进行组织和管理.虽然Windows NT内核使用C语言和汇编语言编写的,本身并未使用到C++中的面向对象机 ...
- ML之FE:基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征衍生(手动设计新特征、利用featuretools工具实现自动特征生成)
ML之FE:基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征衍生(手动设计新特征.利用featuretools工具实现自动特征生成) 目录 基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征 ...
- java aspectj_初窥AspectJ
AspectJ可以说是Java中当之无愧的黑魔法.说它是黑魔法,一方面是因为它很强大,能够解决一些传统编程方法论解决不了的问题,而另一方面,它也相当的晦涩,有着比较陡峭的学习曲线. 本文将带大家探索下 ...
- OpenJDK-11的新特征
OpenJDK-11的新特征 JDK 11是Java SE 11平台版本11的开源参考实现,由JSR 384在Java Community Process中指定. JDK 11 于2018年9月25日 ...
- 初窥R(基本说明、获取帮助、工作空间、输入输出、包)
初窥R(基本说明.获取帮助.工作空间.输入输出.包) 本篇简要介绍使用R的一些基本概念,包括基本说明.获取帮助.工作空间.输入输出,每个知识点中都会通过一个例子来练习. 一.R基本情况说明 1.R是一 ...
最新文章
- Mysql组复制故障恢复测试
- 【计算机网络】网络层 : IP 组播 ( IP 数据报传输方式 | 组播 IP 地址 | 组播 MAC 地址 | IGMP 协议 | 组播路由选择协议 )
- 新写的c++日志库:log4K
- 前端开发面试题总结之——CSS3
- Servlet学习笔记心得(二)
- 计算机认识新朋友教案,小班教案认识新朋友
- Guns 编辑功能实现_入门试炼06
- UVA 10129 Play on Words
- linux python 环境 png,在mint-15 linux上显示python的.png图像
- python编程输入,Python编程:输入变量返回nam
- cad相对坐标快捷键_CAD快捷键及命令大全
- 腾讯下载的qlv格式视频转换mp4格式方法
- 奇幻RPG(人物构造 与 Abstract Factory模式)
- PX4 FMU启动流程 1.nsh
- react项目运行出现进度卡住,Would you like to run the app on another port instead?
- 【POJ3710】Christmas Game 博弈 有限制的图上删边游戏(树形删边游戏进化1)
- java 时间戳 什么意思_java时间与时间戳
- Rocky Linux更换yum源为国内源
- 做网站用html好还是vue好,中大型项目用react还是vue?
- (二)地理信息中对地球的描述-地球的大地水准面、地球椭球体、大地基准面
热门文章
- 考研计算机统考408计算机学科专业基础综合真题视频课程哪里有
- 又一家中国企业加入RISC-V,中国力推之下必将打破ARM的垄断
- Openshift4 Pipeline 调优
- RabbitMQ学习笔记 03、交换机模式(4种)
- 对STIX2.0标准12个构件的解读(续)——对STIX2.0官方文档的翻译
- 空调如何维修保养?空调保养和维修技巧
- 乐视网的视频看不了了,说抱歉,你所访问的视频不存在
- jQuery选择器总结(选择器+元素筛选)
- Forwards, Backwards, May, and Must
- 【OpenAirInterface5g】RRC NR解析之RrcSetupComplete