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类,通过这个类中的不同行为来实现一些动态特性. 它一般有两种初始 ...
随机推荐
- [BZOJ 3682]Phorni
后缀平衡树的模板题? I'm so weak…… 现在觉得替罪羊树比 treap 好写,是不是没救了喵- #include <cstdio> #include <cmath> ...
- 使用dispatch_semaphore_t实现event的基本功能
在Windows平台下, 对线程的同步控制,可以有Critical Section,Mutex,Semaphore,Event 等方式. 在IOS平台,使用GCD进行简单的多线程编程时,可以使用dis ...
- LINQ 客户端生成自增列
var testQuery = (from item in TestInfo.GroupBy(t=>t.TestName) select new { TestCode = item.Min(g= ...
- python海龟图制作
海龟画图很好看,先上图形: 依据代码注释随意打印出来就行: #!/usr/bin/python3.4 # -*- coding: utf-8 -*- import turtle # 拿起一支笔 t = ...
- 数据库服务器CPU持续百分之百、部分Session一直处于执行状态---等待事件为:asynch descriptor resize(Oracle Bug )
问题描述: 项目反馈数据库服务器的CPU持续100%的情况,跟踪发现很多活动会话的等待事件是“asynch descriptor resize”,并且这些会话一直处于Active状态,而这些会话执行的 ...
- 14、java中的equals()和toString()方法
/* 所有对象的父类Object Object中的方法: equals() 对象是否相同的比较方法 toString()对象的字符串表现形式 */ class Person { String name ...
- MySQL的基本操作
1. 查看数据库 语法 #show databases; 2. 添加数据库 语法: #create database demo; 3. 删除数据库 语法: #drop database demo; 4 ...
- AngularJS的MVC中C的实现
Angular的MVC中C的实现 注:在controller操作Dom效率是很低的,我们使用封装的指令去操作Dom
- BigInger isProbablePrime
JAVA BigInteger 成员函数: isProbablePrime public boolean isProbablePrime(int certainty) 如果此 BigInteger 可 ...
- log_format为Nginx设置日志格式
nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式, 另外一条是access_log,用来指定日志文件的存放路径.格式和缓存大小,一般在nginx的配置文件中日记配置 ...