是否可以在 UIDynamicKit 中模拟对象/ UIView 的重力?
Posted
技术标签:
【中文标题】是否可以在 UIDynamicKit 中模拟对象/ UIView 的重力?【英文标题】:Is it possible to simulate gravity to an object / UIView in UIDynamicKit? 【发布时间】:2017-01-05 18:47:02 【问题描述】:不使用 SpriteKit,是否可以模拟 UIView 对象的重力?我想要实现的是一个中心 UIView,其他对象漂浮在它周围。几乎就像围绕太阳的行星。并让它从中心物体吸引和排斥。
我知道您可以向超级视图添加水平和垂直重力。
谢谢!
【问题讨论】:
【参考方案1】:解决方法是使用 UIAttachmentBehavior。
let attachment = UIAttachmentBehavior(item: node, attachedTo: self.ownerNode)
self.animator.addBehavior(attachment)
以上代码将节点对象附加到 self.ownerNode。我还在 self.ownerNode 中添加了 UISnapBehavior,这样当拖离中心时,self.ownerNode 将始终快速回到中心,并且所有其他节点都跟随它。
let snapCenter = UISnapBehavior(item: self.ownerNode, snapTo: self.view.center)
self.animator.addBehavior(snapCenter)
【讨论】:
【参考方案2】:另一种方法:使用字段。
我认为,UIKit Dynamics 在 ios 9 左右的某个时候将字段带到了桌面上。
场为其... 场影响范围内的所有位置提供相同、相似或独特的“力”向量。因此得名。
您可以切换一个场,让它在某个时刻推动,在另一个时刻拉动,甚至可以将它们组合、分层并在影响区域中将它们围绕屏幕对齐。
单个场可以像行星引力一样作用于屏幕中间,使卫星围绕它移动、落入其中或被击退。
字段是 UIKit Dynamics 的一个非常强大的功能,无论是在创造力还是影响力方面。它们也非常有效,因为它们只对您规定受它们影响的那些事情采取行动。因此,尽管它们的场大小可能很大,并且它们确定位置影响的功能很复杂,但它们仍然非常有效。
您可以在这里阅读/观看/收听更多关于它们的信息:
https://developer.apple.com/videos/play/wwdc2015/229/
【讨论】:
以上是关于是否可以在 UIDynamicKit 中模拟对象/ UIView 的重力?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 EasyMock 创建一个实现多个接口的模拟对象?