UIKit的动态行为泛与附件不继续碰撞行为?
如何在UIDynamicItem
的平移上发生碰撞检测?
背景:我从一组颜色/字符串中随机生成20个标签(这部分对于问题不是必需的),然后将它们添加到具有随机中心位置的主视图。 从那里,我添加UIDynamicBehavior
s,如下所示:
1) UIDynamicItemBehavior
停止旋转标签2) UISnapBehavior
将标签捕捉到视图的中心(我想要一个类似重力的移动,但是,这不是这个问题)3) UICollisionBehavior
用于collisionMode
所在的所有标签.Items
。
这在“初始”设置中起作用......所有标签出现在随机斑点处,然后迅速地在中心处对齐,并具有适当的碰撞检测。 但是,我的问题是,如何才能移动标签(通过平移手势),以便继续进行碰撞检测?
我在每个标签上都设置了UIPanGestureRecognizer
,当它们开始拖动时,我创建一个UIAttachmentBehavior
并使用它在我拖动时移动它们。 从标签移动的意义上说,这个“起作用”,但它只会滑过所有其他标签,而不会发生任何碰撞检测。 我该如何实现这种碰撞检测,以便当我开始将一个标签拖拽到其他标签上时,它们移动到恰好不存在重叠的位置(然后根据中心重力点将它们回弹到它们的位置) ? 我是否需要将UIAttachmentBehavior
附加到所有其他标签上,以便我拖动每个标签?
我为我面临的问题创建了一个测试项目,它展示了我刚刚描述的内容:
github测试项目
谢谢!
好吧,经过几个月的思考这个问题,我终于想到了一个解决方案,所以我想我会在这里发布它,以便以后每个人都受益。
这是一个简单的SpriteKit场景,非常容易完成。 我只是创建一个小SKScene
,加SKLabelNode
s转换的那一幕与任何文字/色彩/上浆我的愿望,然后添加一个SKFieldNode
与radialGravityField
。 从那里,通过每个节点的physicsBody
属性可以播放物理属性,并且通过插入场景的touchesBegan
方法并适当地移动适当的节点,物理引擎负责处理碰撞和弹跳我。
上一篇: UIKit dynamic behavior pan with attachment not continuing collision behavior?