我在 NSMutableArray 中有几个 UIImageViews。它们都在 superView 中。我想检查一个 UIImageView 是否与数组中的另一个 UIImageView 相交(碰撞、碰撞或触摸)。这是我一直在做的,但我认为应该有更好的方法。

for (UIImageView *b in _blocks) {
    for (UIImageView *b2 in _blocks) {
        if (CGRectContainsPoint(b2.frame, CGPointMake(b.center.x, b.center.y + b.frame.size.height/2))) {
            // Do something
        }

    }

}

如果我想检查 ImageView 是否以这种方式接触超过 2 个 View ,代码将变得非常糟糕。这就是为什么我想知道一种更好的方法来做到这一点。

最佳答案

做这个:

 NSMutableArray *arrIntersect = [NSMutableArray array];
 for (UIImageView *b in _blocks) {
    for (UIImageView *b2 in _blocks) {
         if (b != b2 && CGRectIntersectsRect(b2.frame, b.frame)) {
            if(arrIntersect.count > 2)
               //count > 2
            else
               [arrIntersect addObject:b2];
        }
    }
}

关于objective-c - 在 NSMutableArray 中检查两个或多个 CGRect 是否接触的好方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12799961/

10-16 11:02