我正在尝试拥有一个包含许多不同 NSTextView 的 NSView,而不是相互交叉。起初,我有这样做的想法:
for (NSString *str in frames) {
while (CGRectIntersectsRect(NSRectToCGRect(field.frame), NSRectToCGRect(NSRectFromString(str)))) {
CGPoint origin = [self randomPoint];
field.frame = CGRectMake(origin.x, origin.y, sizeOfButton.width, sizeOfButton.height);
}
}
NSString *string = NSStringFromRect(field.frame);
[frames addObject:string];
在这里,'frames' 是一个数组,我将 NSTextViews 的坐标添加到其中,一旦它们被清除并且假定不相交。'field' 是一个 NSTextField,而 'randomPoint' 是随机找到一个 NSPoint 的方法,所以 NSTextField 的放置是随机的。
发生的情况是我遍历了一个矩形数组,并检查每个矩形是否新矩形不相交。当他通过这个测试时,他自己进入数组并带入一个新的文本字段。
这种方法的问题是 NSTextField 一次检查一个矩形。实际上,它可能不会与一个矩形相交,但会与下一个矩形相交,不幸的是,一旦修改了它的坐标,它可能会通过测试,同时与第一个矩形相交。
现在,为了简化,是否有人知道一种方法,或者是否可以更改我的代码,同时检查一个对象是否与许多其他对象相交?是否可以检查超过 2 个 CGRect 之间的交集?