网站大量收购独家精品文档,联系QQ:2885784924

移动应用软件开发综合实训(基于iOS平台)-2017 UIDaynamic的使用 iOS中UIDynamic物理仿真详解.docx

移动应用软件开发综合实训(基于iOS平台)-2017 UIDaynamic的使用 iOS中UIDynamic物理仿真详解.docx

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 = @[@吸附行为, @推动行为, @刚性

您可能关注的文档

文档评论(0)

WanDocx + 关注
实名认证
内容提供者

大部分文档都有全套资料,如需打包优惠下载,请留言联系。 所有资料均来源于互联网公开下载资源,如有侵权,请联系管理员及时删除。

1亿VIP精品文档

相关文档