繁体   English   中英

组成员之间(而非组之间)的Swift Xcode冲突

[英]Swift Xcode Collisions between group members, but not groups

我在单视图应用程序中,并且设置了碰撞行为。 我有两个不同的数组或UIViews组。 我希望同一组的成员彼此碰撞,但不同组的成员彼此碰撞。 我怎样才能做到这一点?

碰撞

如果您只是有两个要检查冲突的视图数组,那么这应该只是测试两组之间的所有对(或者您是想找到一种优化的方式来做这件事?):

let collidingViews = group1.filter{ (view) in group2.contains{ $0.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($0)} }
}

然后,您可以使用此功能检查一个视图(例如,一个正在移动的视图)与另一个视图之间的冲突:

 for collidingView in view.collindingViews
 {
    // ... do something with the collindingView
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM