1

在初始化 s 之前,我试图查看 s 是否与数组中的CGRect任何其他 s 相交,但我还没有找到一种有效的万无一失的方法。CGRectCGRect

请注意,intersection 是CGRects 的数组。任何关于如何做到这一点?下面的方法有时不起作用,生成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)
   }
 }
4

2 回答 2

6

您可以使用CGRectIntersectsRect

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

或者(感谢 Martin R 的建议),您可以使用该contains方法而不是reduce

let doesIntersect = arrayOfRects.contains { CGRectIntersectsRect($0, testRect) }
于 2016-01-12T21:33:03.373 回答
1

斯威夫特 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
  }
}

快乐编码...!

于 2016-10-27T09:04:15.240 回答