UIKit的动态行为泛与附件不继续碰撞行为?

如何在UIDynamicItem的平移上发生碰撞检测?

背景:我从一组颜色/字符串中随机生成20个标签(这部分对于问题不是必需的),然后将它们添加到具有随机中心位置的主视图。 从那里,我添加UIDynamicBehavior s,如下所示:

1) UIDynamicItemBehavior停止旋转标签2) UISnapBehavior将标签捕捉到视图的中心(我想要一个类似重力的移动,但是,这不是这个问题)3) UICollisionBehavior用于collisionMode所在的所有标签.Items

这在“初始”设置中起作用......所有标签出现在随机斑点处,然后迅速地在中心处对齐,并具有适当的碰撞检测。 但是,我的问题是,如何才能移动标签(通过平移手势),以便继续进行碰撞检测?

我在每个标签上都设置了UIPanGestureRecognizer ,当它们开始拖动时,我创建一个UIAttachmentBehavior并使用它在我拖动时移动它们。 从标签移动的意义上说,这个“起作用”,但它只会滑过所有其他标签,而不会发生任何碰撞检测。 我该如何实现这种碰撞检测,以便当我开始将一个标签拖拽到其他标签上时,它们移动到恰好不存在重叠的位置(然后根据中心重力点将它们回弹到它们的位置) ? 我是否需要将UIAttachmentBehavior附加到所有其他标签上,以便我拖动每个标签?

我为我面临的问题创建了一个测试项目,它展示了我刚刚描述的内容:

github测试项目

谢谢!


好吧,经过几个月的思考这个问题,我终于想到了一个解决方案,所以我想我会在这里发布它,以便以后每个人都受益。

这是一个简单的SpriteKit场景,非常容易完成。 我只是创建一个小SKScene ,加SKLabelNode s转换的那一幕与任何文字/色彩/上浆我的愿望,然后添加一个SKFieldNoderadialGravityField 。 从那里,通过每个节点的physicsBody属性可以播放物理属性,并且通过插入场景的touchesBegan方法并适当地移动适当的节点,物理引擎负责处理碰撞和弹跳我。

链接地址: http://www.djcxy.com/p/96793.html

上一篇: UIKit dynamic behavior pan with attachment not continuing collision behavior?

下一篇: UIKit Dynamics in iOS Control Center