Ios 检查CGRect是否与CGRect数组相交

Ios 检查CGRect是否与CGRect数组相交,ios,swift,nsarray,cgrect,cgrectintersectsrect,Ios,Swift,Nsarray,Cgrect,Cgrectintersectsrect,在初始化CGRect之前,我正在尝试查看CGRect是否与数组中的任何其他CGRect相交,但我还没有找到一种简单有效的方法 请注意,交点是CGRects的数组。有没有关于如何做到这一点的想法?下面的方法不起作用有时生成的CGRect与数组中的一个相交,我不确定我缺少了什么 for element in intersection { while CGRectIntersectsRect(rect1, element) { xTemp = CGFloat(arc4random_unif

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

请注意,交点是
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)
   }
 }
你可以利用:

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

let doesIntersect = arrayOfRects.contains { CGRectIntersectsRect($0, testRect) }
你可以利用:

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

let doesIntersect = arrayOfRects.contains { CGRectIntersectsRect($0, 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
  }
}
让rectToCompare:CGRect!//在这里指定您的rect

对于0..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
  }
}
让rectToCompare:CGRect!//在这里指定您的rect

对于0中的索引..您的代码没有意义。第一次通过的rect1将被取消初始化。rect1的起始值来自哪里?您的代码没有意义。第一次通过的rect1将被取消初始化。rect1的起始值来自哪里?使用contains()而不是reduce()可能更有效,因为一旦找到交集,它就会停止迭代。嗯。。。这显然会更有效,更具可读性。谢谢你的建议。我不知道为什么,但几乎总是
reduce
首先进入我的脑海;也许我有太多的还原器/转换器:PUsing contains()而不是reduce()可能更有效,因为一旦找到交集,它就会停止迭代。嗯。。。这显然会更有效,更具可读性。谢谢你的建议。我不知道为什么,但几乎总是
reduce
首先进入我的脑海;也许我有太多的减速器/传感器:P