Swift Xcode 组成员之间的碰撞,但不是组
Swift Xcode Collisions between group members, but not groups
我在单视图应用程序中,并且设置了碰撞行为。我有两个不同的数组或 UIView 组。我希望同一组的成员相互碰撞,但不同组的成员相互通过。我该怎么做?
collisions
如果您只有两个要检查碰撞的视图数组,这应该只是测试两组之间所有对的问题(或者您是否打算找到一种优化的方法?) :
let collidingViews = group1.filter{ (view) in group2.contains{ [=10=].frame.intersects(view.frame) }}
如果您需要检查作为层次结构一部分的特定视图的冲突,您可以使用 UIView 标记作为您的组标识符并扩展 UIView 以识别冲突:
extension UIView
{
func collidesWith(_ other: UIView)
{
return other !== self
&& tag == other.tag
&& frame.intersects(other.frame)
}
var collidingViews:[UIView]
{ return superview.subviews.filter{self.collidesWith([=11=])} }
}
然后您可以使用此功能检查一个视图(例如被移动的视图)与其他视图之间的碰撞:
for collidingView in view.collindingViews
{
// ... do something with the collindingView
}
我在单视图应用程序中,并且设置了碰撞行为。我有两个不同的数组或 UIView 组。我希望同一组的成员相互碰撞,但不同组的成员相互通过。我该怎么做?
collisions
如果您只有两个要检查碰撞的视图数组,这应该只是测试两组之间所有对的问题(或者您是否打算找到一种优化的方法?) :
let collidingViews = group1.filter{ (view) in group2.contains{ [=10=].frame.intersects(view.frame) }}
如果您需要检查作为层次结构一部分的特定视图的冲突,您可以使用 UIView 标记作为您的组标识符并扩展 UIView 以识别冲突:
extension UIView
{
func collidesWith(_ other: UIView)
{
return other !== self
&& tag == other.tag
&& frame.intersects(other.frame)
}
var collidingViews:[UIView]
{ return superview.subviews.filter{self.collidesWith([=11=])} }
}
然后您可以使用此功能检查一个视图(例如被移动的视图)与其他视图之间的碰撞:
for collidingView in view.collindingViews
{
// ... do something with the collindingView
}