- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
iOS中UIDynamic物理仿真详解
一、Dynamic简介
简介:UIKit动力学最大的特点是将现实世界动力驱动的动画引入了UIKit,比如动力,铰链连接,碰撞,悬挂等效果,即将2D物理引擎引入了UIKit。
注意:UIKit动力学的引入,并不是为了替代CA或者UIView动画,在绝大多数情况下CA或者UIView动画仍然是最有方案,只有在需要引入逼真的交互设计的时候,才需要使用UIKit动力学它是作为现有交互设计和实现的一种补充。
其他2D仿真引擎:
BOX2D:C语言框架,免费
Chipmunk:C语言框架免费,其他版本收费
二、Dynamic中的三个重要概念
Dynamic Animator:动画者,为动力学元素提供物理学相关的能力及动画,同时为这些元素提供相关的上下文,是动力学元素与底层iOS物理引擎之间的中介,将Behavior对象添加到Animator即可实现动力仿真。
Dynamic Animator Item:动力学元素,是任何遵守了UIDynamic协议的对象,从iOS7开始,UIView和UICollectionViewLayoutAttributes默认实现协议,如果自定义对象实现了该协议,即可通过Dynamic Animator实现物理仿真。
UIDynamicBehavior:仿真行为,是动力学行为的父类,基本的动力学行为类UIGravityBehavior、UICollisionBehavior、UIAttachmentBehavior、UISnapBehavior、UIPushbehavior以及UIDynamicItemBehavior均继承自该父类。
三、项目搭建演练
1、模拟重力体验物理仿真效果
2、要使用物理仿真,最基本的使用步骤是:
要有一个 仿真者[UIDynamicAnimator] 用来仿真所有的物理行为
要有物理 仿真行为[如重力UIGravity] 用来模拟重力的行为
将物理仿真行为添加给仿真者实现仿真效果。
第一种情况——重力仿真
// 1. 谁来仿真?UIDynamicAnimator来负责仿真
UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
// 2. 仿真个什么动作?自由落体
UIGravityBehavior *gravity = [[UIGravityBehavior alloc] initWithItems:@[view, redView]];
// 3. 开始仿真
[animator addBehavior:gravity];
重力仿真效果图
重力效果无边界检测
第二种情况——增加边缘检测
默认情况下没有任何阻挡控件直接掉出屏幕,可以通过添加边缘检测行为防止掉出。
// 3. 碰撞检测
UICollisionBehavior *collision = [[UICollisionBehavior alloc] initWithItems:@[view, redView]];
// 设置不要出边界,碰到边界会被反弹
collision.translatesReferenceBoundsIntoBoundary = YES;
// 4. 开始仿真
[animator addBehavior:collision];
增加边缘检测效果图
重力有边界
第三种情况——旋转
让控件旋转45°后,控件并不会倒下,因为控件的重心就在45°的那条线上。
如果修改为别的角度就会倒下
view.transform = CGAffineTransformMakeRotation(M_PI_4);
旋转效果图
旋转
第四种情况——碰撞
再增加一个红色的控件的时候就会发生碰撞的效果。
四、项目框架搭建
1、结构分析
为了演示其他的几种行为效果,案例中需要用到
UINavigationController[导航控制器],根控制器为列表控制器
UITableViewController[列表控制器],用来展示所有的行为列表
UIViewController[普通控制器],用来演示各种不同行为的效果
在显示各种行为的普通控制器中有2个共同点:
相同的背景效果
都有一个小方块
所以为了避免每个行为都要写一个控制器,然后写对应的背景及方块图片代码,就抽出一个示例控制器,用来显示所有的行为效果
只不过示例控制器要加载和显示的view,要根据要展示的行为去加载不同的view(多态的合理运用)
2、代码实现
1 列表控制器
第一步加载显示导航控制器及列表控制器
通过属性列表或者数据源的方式加载所有的行为名词
_dynamicArr = @[@吸附行为, @推动行为, @刚性
您可能关注的文档
- 虚拟实训 实训攻略 矩形工具.doc
- 虚拟实训 实训攻略 如何使用粉丝通.doc
- 虚拟实训 实训攻略 如何写第一篇博文内容.doc
- 虚拟实训 实训攻略 使用微博橱窗做限时秒杀.doc
- 虚拟实训 实训攻略 微博粉丝分析.doc
- 虚拟实训 实训攻略 微博内容分析.doc
- 虚拟实训 实训攻略 微博相关账号分析.doc
- 虚拟实训 实训攻略 文案视觉化缘由和方法.doc
- 虚拟实训 实训攻略 走在高科技前沿的汾酒,开创了“一物一码”新营销 - 副本.doc
- 虚拟现实程序开发 6.物理引擎 6.3 物理材质.docx
- 移动应用软件开发综合实训(基于iOS平台)-2017 Xcode单元测试 使用Xcode进行单元测试.docx
- 移动应用软件开发综合实训(基于iOS平台)-2017 Xcode设备管理工具使用 XCode 如何添加调试设备.docx
- 移动应用软件开发综合实训(基于iOS平台)-2017 朝向和运动检测 Core Motion框架使用方法.docx
- 移动应用软件开发综合实训(基于iOS平台)-2017 粒子效果 SpriteKit-粒子效果-SKEmitterNode.docx
- 移动应用软件开发综合实训(基于iOS平台)-2017 生成二维码 iOS 二维码扫描.docx
- 移动应用软件开发综合实训(基于iOS平台)-2017 使用AVPlayer播放网络音乐和视频 AVPlayer 本地、网络视频播放相关.docx
- 移动游戏开发综合实训-2017 PS色彩运用 PS色彩运用3_PS色彩配色运用.doc
- 移动游戏开发综合实训-2017 Unity3D手游开发:如何实现最高分的存储与显示 游戏开发-碰撞设置与检测.docx
- 移动游戏开发综合实训-2017 拆分UV 拆分UV(下).docx
- 移动游戏开发综合实训-2017 场景设计 场景设计2_场景概念设计.docx
最近下载
- 3DMax中英文对照表2.doc
- 2024年四川省德阳市中考生物试题卷(含答案解析).docx
- 苏教版四下简便计算练习题.doc VIP
- 北京市第一零一中学2023-2024学年八年级下学期期中数学试题(原卷版).pdf VIP
- 2025年单招生活常识题目答案大全 .pdf VIP
- 湖北省武汉市2025届高三上学期元月调考数学试题(学生版+解析版).docx
- 卡萨帝 洗衣机 双子云裳洗干一体机 C8 HU12G1 使用说明.pdf
- 2023届高考英语新时政热点阅读 10 人工智能(含解析).docx
- 马尔测长仪使用说明ULM Manual_Chinese.pdf VIP
- OA系统运维项目方案.docx VIP
文档评论(0)