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类,通过这个类中的不同行为来实现一些动态特性. 它一般有两种初始 ...
随机推荐
- WindowsAPI开发常用资料
主类 子类 功能 Win32API SHGetSpecialFolderLocation 获取系统特殊文件夹路径(SHGetSpecialFolderLocation) 通过 SHGetSpecial ...
- [UI]抽屉菜单DrawerLayout分析(一)
本文转载于:http://www.cnblogs.com/avenwu/archive/2014/04/16/3669367.html 侧拉菜单作为常见的导航交互控件,最开始在没有没有android官 ...
- xmind8
win10企业版安装 xmind.zip,打开应用程序报下面的错 解决办法是 先备份xmind8下的XMind.ini文件 Open up Xmind.ini and replace "Ap ...
- appium 环境搭建 java
1 安装node.js 1.1 安装node.js http://nodejs.cn/download/ 1.2.下载后直接点击exe,按照提示一步一步的安装 1.3 安装成功后,运行cmd,输入no ...
- React Native 网络请求
如下面的Code,分别介绍了GET,POST,以及使用XMLHttpRequest的Get请求. import React, { Component } from 'react'; import { ...
- nginx(tengine)的一些小优化(持续更新)
1.nginx日志切割脚本 需求来源:nginx本身并没有日志切割的功能,由访问产生的大日志很难进行分析. 实现目的:每天对nginx日志进行切割,并备份至指定文件夹. 简要指令: mv /usr/l ...
- ubuntu死机怎么办
在使用ubuntu的时候由于各种复杂的因素,如软件不兼容,误操作等问题导致"死机"怎么办呢?下面我们来看看如何解决这问题... 可以打开终端模拟器 1 ctrl+alt+t ...
- tcpdump抓SQL[转]
转自:http://www.cnblogs.com/LMySQL/p/5060604.html 前言:假设如果有个服务器几十个链接突然达到上千个链接,show processlist,general_ ...
- <<Exceptional C++>> notes
- class Complex { public: ) : real_(real), imaginary_(imaginary) { } Complex& operaor+=(const Co ...
- 使用 Linq 对多个对象进行join操作 C#
class A { public int id { get; set; } public string name { get; set; } } class B { public int id { g ...