Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 带附件的UIKit动态行为平移不连续碰撞行为?_Ios_Swift_Uikit Dynamics_Uidynamicbehavior - Fatal编程技术网

Ios 带附件的UIKit动态行为平移不连续碰撞行为?

Ios 带附件的UIKit动态行为平移不连续碰撞行为?,ios,swift,uikit-dynamics,uidynamicbehavior,Ios,Swift,Uikit Dynamics,Uidynamicbehavior,如何在UIDynamicItem的平移上进行碰撞检测 背景:我从一组颜色/字符串中随机生成20个标签(这部分对问题来说不是必需的),然后将它们添加到具有随机中心位置的主视图中。在此基础上,我添加了UIDynamicBehaviors,如下所示: 1) uidynamictembehavior停止标签旋转 2) UISnapBehavior将标签捕捉到视图的中心(我希望像重力一样移动,但这不是问题) 3) UICollisionBehavior适用于碰撞模式为的所有标签 这在“初始”设置中起作用…

如何在
UIDynamicItem
的平移上进行碰撞检测

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

1)
uidynamictembehavior
停止标签旋转 2)
UISnapBehavior
将标签捕捉到视图的中心(我希望像重力一样移动,但这不是问题) 3)
UICollisionBehavior
适用于
碰撞模式为
的所有标签

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

我已经在每个标签上设置了一个
uipangestureerecognizer
,当它们开始拖动时,我会创建一个
UIAttachmentBehavior
,并在拖动时使用它来移动它们。从标签移动的意义上说,这是“有效的”,但它只会在所有其他标签上滑动,而不会发生任何碰撞检测。如何实现这种碰撞检测,以便当我开始向其他标签拖动一个标签时,它们会移动到足够远的地方,以避免重叠(然后这些标签会根据重心点恢复到它们的位置)?我是否需要将
UIAttachmentBehavior
附加到所有其他标签上,并将其附加到为每个平移拖动的标签上

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


谢谢

好吧,经过几个月的思考,我终于想到了一个解决方案,所以我想我以后会把它贴在这里,为大家谋福利

用一个简单的SpriteKit场景就很容易做到这一点。我只需创建一个小的
sk场景
,将
SKLabelNode
s添加到该场景中,使用我想要的任何文本/颜色/大小,然后使用
radialGravityField
添加一个
SKFieldNode
。从那里,物理属性可以通过每个节点的
physicsBody
属性进行播放,我可以通过插入场景的
touchesbreated
方法并适当移动相应的节点来完成所需的操作,物理引擎为我处理碰撞和反弹