检查 CGRect 是否与 CGRect 数组相交

Check to see if a CGRect intersects with an array of CGRects

我试图在初始化 CGRect 之前查看 CGRects 是否与数组中的任何其他 CGRects 相交,但我还没有找到一个简单的证明有效的方法。

注意交集是CGRect的数组。任何关于如何做到这一点?下面的方法有时不起作用,生成的 CGRect 与数组中的一个相交我不确定我遗漏了什么。

for element in intersection {
  while CGRectIntersectsRect(rect1, element) {
    xTemp = CGFloat(arc4random_uniform(UInt32(screenSize.width - buttonWidth1)))
    yTemp = CGFloat(arc4random_uniform(UInt32(screenSize.height - buttonWidth1)))
    rect1 = CGRect(x: xTemp, y: yTemp, width: buttonWidth, height: buttonWidth)
   }
 }

你可以利用 CGRectIntersectsRect:

let doesIntersect = arrayOfRects.reduce(false) {
    return [=10=] || CGRectIntersectsRect(, testRect)
}

或者(感谢 Martin R 的建议),您可以使用 contains 方法代替 reduce:

let doesIntersect = arrayOfRects.contains { CGRectIntersectsRect([=11=], testRect) }

Swift 3.0:

let rectToCompare: CGRect! // Assign your rect here
for index in 0..<self. arrayOfRects.count {
  let rect = self. arrayOfRects[index]
  if rect.intersects(rectToCompare) {
     // Write your logic here
  }
}

快乐编码...!