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