如何在UIDynamicItem
?
背景:我从一组颜色/字符串中随机生成20个标签(这部分对问题不是必不可少的),然后随机将它们添加到主视图中中心位置。从那里,我添加UIDynamicBehavior
s,如下所示:
1)UIDynamicItemBehavior
阻止标签旋转
2)UISnapBehavior
将标签捕捉到视图的中心(我想要一个像引力一样的动作,但同样,这不是这个问题)
3)UICollisionBehavior
适用于collisionMode
为.Items
的所有标签。
这适用于"首字母"设置...所有标签都出现在随机点上,然后在中心快速对齐,并进行适当的碰撞检测。我的问题是,我怎样才能移动标签(通过平移手势),以便继续进行碰撞检测?
我在每个标签上都设置了UIPanGestureRecognizer
,当他们开始拖动时,我创建了一个UIAttachmentBehavior
并在我拖动时使用它来移动它们。这"工作"在标签移动的意义上,它只是滑过所有其他标签而没有发生任何碰撞检测。我怎样才能实现这种碰撞检测,这样当我开始将一个标签拖向其他标签时,它们就会移开,只是为了没有重叠(然后根据中心重力点重新回到它们的位置) ?我是否需要将UIAttachmentBehavior
附加到我拖动每个平底锅的所有其他标签上?
我为我面临的问题创建了一个测试项目,展示了我刚刚描述的内容:
谢谢!
答案 0 :(得分:0)
好吧,经过几个月思考这个问题,我终于想到了一个解决方案,所以我想我会在这里发布它,以便以后每个人都能获益。
使用简单的SpriteKit场景,这非常容易实现。我只需创建一个小SKScene
,将SKLabelNode
添加到该场景中,使用我想要的任何文本/颜色/大小,然后添加SKFieldNode
radialGravityField
。从那里开始,物理属性可以通过每个节点的physicsBody
属性进行播放,我可以通过插入场景的touchesBegan
方法并适当地移动相应的节点来完成所需的内容。发动机照顾碰撞并为我弹跳。