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)

 

转载于:https://www.cnblogs.com/lidarui/p/5996190.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值