UIDynamicAnimator UIKit动力学
也许是工作上并没有这方面的需要,对UIDynamicAnimator的了解不多。这里做简单的介绍;
UIKit动力学是模拟真实世界的一些特性,主要就是UIDynamicAnimator类,通过类中的不同行为实现一些动态特性;
1、初始化
UIDynamicAnimator有两种初始化方式;
let animator = UIDynamicAnimator(referenceView: self.view)
self.view表示一个参照试图,用来规定物理仿真的范围
animator = UIDynamicAnimator.init(collectionViewLayout: <#T##UICollectionViewLayout#>)
不是任何对象都能做物理仿真,能够进行物理仿真的元素需要遵守UIDynamicItem协议,UIView遵守了该协议,所以任何UI控件都能进行物理仿真。
UICollectionViewLayoutAttributes类默认也遵守UIDynamicItem协议,所以也可以进行仿真
2、物理仿真行为
UIDynamicAnimator有以下几种物理仿真行为:
UIGravityBehavior:重力行为
UICollisionBehavior:碰撞行为
UISnapBehavior:捕捉行为
UIPushBehavior:推动行为
UIAttachmentBehavior:附着行为
UIDynamicItemBehavior:动力元素行为
将物理仿真行为添加到仿真器上开始进行仿真操作;
3、UIDynamicAnimator的常见方法
//添加一个物理行为
animator .addBehavior(<#T##behavior: UIDynamicBehavior##UIDynamicBehavior#>) //移除一个物理行为
animator .removeBehavior(<#T##behavior: UIDynamicBehavior##UIDynamicBehavior#>) //移除全部物理行为
animator .removeAllBehaviors()
4、实际使用(以推动行为为例)
animator.removeAllBehaviors()
let push = UIPushBehavior.init(items: [self.gravity,self.push], mode: UIPushBehaviorMode.instantaneous)
push.magnitude = 1 //推动的量级必须初始化,量级的大小表示推动的速度
animator .addBehavior(push) //控件被推出视图
再添加一种碰撞行为
collision = UICollisionBehavior.init(items: [self.gravity,self.push])
collision.translatesReferenceBoundsIntoBoundary = true
collision.collisionMode = UICollisionBehaviorMode.everything //这里模式的选择 大家可以不断的调试来检查 尤其是混合效果 比如如果我把推动的模式写为continuous连绵不断的推动,则混合效果中控件就会贴在参照图的边缘不动
animator .addBehavior(collision)
UIDynamicAnimator UIKit动力学的更多相关文章
- iOS开发概述UIkit动力学,讲述UIKit的Dynamic特性,UIkit动力学是UIkit框架中模拟真实世界的一些特性。
转发:http://my.oschina.net/u/1378445/blog/335014 iOS UIKit动力学 Dynamics UIAttachmentBehavior 实现iMessage ...
- iOS UIKit Dynamics入门 UIKit动力学,实现重力、连接、碰撞、悬挂等动画效果
本文为转载文章 版权归原文所有 什么是UIKit动力学(UIKit Dynamics) 其实就是UIKit的一套动画和交互体系.我们现在进行UI动画基本都是使用CoreAnimation或者UIVie ...
- 带你了解UIKit动力学
一.简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象如:重力.弹性碰撞等现象 ...
- iOS开发UIkit动力学UIDynamicAnimator一系列动画
UIDynamicAnimator类,通过这个类中的不同行为来实现一些动态特性. UIAttachmentBehavior(吸附),UICollisionBehavior(碰撞),UIGravityB ...
- iOS7 UIKit动力学-碰撞特性UICollisionBehavior 下
上文讲到了为window加一个边界.实现碰撞的效果,接下来我们将提到一个托付方法: - (void)collisionBehavior:(UICollisionBehavior *)behavior ...
- iOS7 UIKit动力学-重力特性UIGravityBehavior
续文 在iOS7中事实上新加了非常多新的特性.之前看过,也了解过一些新的内容.如新的动力学特性,TextKit的图文混排,还有自己定义的动画跳转等.那段时间也比較忙,没时间整理.如今项目也弄完了,打算 ...
- iOS7 UIKit动力学-碰撞特性UICollisionBehavior 上
我们谈到了重力上述财产UIGravityBehavior这个类. 非常明确的看法,当我们添加的属性的严重性后,,苹果UIview像掉进无底洞,地下坠,不断的加速.而如今呢,我们要在这个手机屏幕上,加入 ...
- WWDC 2013 Session笔记 - UIKit Dynamics入门
本文涉及到的WWDC2013 Session有 1.Session 206 Getting Started with UIKit Dynamics 2.Session 221 Advanced Tec ...
- ios UIKit动力
UIkit动力学是UIkit框架中模拟真实世界的一些特性. UIDynamicAnimator 主要有UIDynamicAnimator类,通过这个类中的不同行为来实现一些动态特性. 它一般有两种初始 ...
随机推荐
- 如何解决CDR x8安装时显示“已停止工作”
相信很多朋友在安装cdr X8时会遇到这样一种情况,能装上去,但不能运行,弹出提示说CorelDRAW X8(64-bit)已停止工作.同样的X8安装包,在不同的电脑上测试有的没有问题,有的则会出现以 ...
- OpenCV学习笔记——OpenCV安装
关于OpenCV安装 1.下载和安装OpenCV SDK 在官网:http://opencv.org/上找到OpenCV windows版下载 . 后得到一个 opencv-2.X.X.exe的文件, ...
- [原] wmic: Invalid XSL format (or) file name错误解决方法
之前运行wmic命令正确,今天在服务器上出现Invalid XSL format (or) file name的提示,搜索了一下,在这里找到了答案: http://www.ctkn.net/2011/ ...
- 0.AutoMapper核心
AutoMapper是基于约定的对象 - 对象映射器.AutoMapper使用流畅的配置API来定义对象 - 对象映射策略.AutoMapper使用基于约定的匹配算法来匹配源到目标值.AutoMapp ...
- 轻量级Lua IDE ZeroBrane Studio 的使用技巧和汉化
快捷键 : alt + shift +鼠标 ,可以块选中文本. F12 折叠/展开 所有 F5 调试运行 点击第二次 将跳转到第一个断点处 F10 单步执行 shift +F10 单步执行,不进入函数 ...
- Verilog HDL那些事_建模篇笔记(实验九:VGA驱动)
1.了解VGA协议 VGA协议有5个输入信号,列同步信号(HSYNC Signal),行同步信号(VSYNC Signal),红-绿-蓝,颜色信号(RGB Signal). 一帧屏幕的显示是由行从上至 ...
- 关于lemon oa的数据库
lemonOA的数据库默认用的是hsqldb,这个数据库还是第一次听说,暂且不论. 也就说Lemon OA默认使用HSQLDB数据库,是嵌入式的数据库不需要单独安装. lemon-1.4.0\weba ...
- 为模版设计师而生的Twig(下)-Twig使用指南
原文地址:http://my.oschina.net/veekit/blog/276800 12. 模板继承 Twig最强大的部分是模板继承.模板继承允许你建立一个基本的"骨架"模 ...
- UVA 494 Kindergarten Counting Game
题目大意:输入一个字字符串,输出该字符串中所包含的"word"个数,其中"word"是指连续的字母(大小写均可) 题目思路:其实这是道水题,不过我考虑的时候,太 ...
- JVM实用参数(八)GC日志
本系列的最后一部分是有关垃圾收集(GC)日志的JVM参数.GC日志是一个很重要的工具,它准确记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以优化堆设置和GC设置,或者改进应用程序的对象分配 ...