检查CGRect是否与CGRects数组相交

时间:2016-01-12 21:24:11

标签: ios swift nsarray cgrect cgrectintersectsrect

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

请注意,intersection是CGRect s的数组。有什么需要怎么做?下面的方法有时无法生成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)
   }
 }

2 个答案:

答案 0 :(得分:6)

您可以使用CGRectIntersectsRect

let doesIntersect = arrayOfRects.reduce(false) {
    return $0 || CGRectIntersectsRect($1, testRect)
}

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

let doesIntersect = arrayOfRects.contains { CGRectIntersectsRect($0, testRect) }

答案 1 :(得分:1)

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
  }
}

快乐编码......!