检查 CGRect 是否与 CGRect 数组相交
Check to see if a CGRect intersects with an array of CGRects
我试图在初始化 CGRect
之前查看 CGRect
s 是否与数组中的任何其他 CGRect
s 相交,但我还没有找到一个简单的证明有效的方法。
注意交集是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
}
}
快乐编码...!
我试图在初始化 CGRect
之前查看 CGRect
s 是否与数组中的任何其他 CGRect
s 相交,但我还没有找到一个简单的证明有效的方法。
注意交集是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
}
}
快乐编码...!