这与UnionRects(rect1,rect2)相同吗?我正在尝试将一些Swift代码转换为Objective C.我在引用或Google搜索中找不到这个。
再次看到这个,我想我看到了我的问题。这是一系列的rects,而不是rect。显然,“+ =”代表阵列。
直接来自Apple's sample code for Photos:
fileprivate func differencesBetweenRects(_ old: CGRect, _ new: CGRect) -> (added: [CGRect], removed: [CGRect]) {
if old.intersects(new) {
var added = [CGRect]()
if new.maxY > old.maxY {
added += [CGRect(x: new.origin.x, y: old.maxY, width: new.width, height: new.maxY - old.maxY)]
}
...
}
答案 0 :(得分:3)
经过编辑的问题清楚地表明您曾在两个+=
上询问有关使用Array
的问题。这会将正确数组的内容附加到左侧数组中,如您所想。它在" Accessing and Modifying an Array"下的文档中有所描述。
以下是我的原始答案,保留给在+=
s之间寻找CGRect
这个问题的人。
如果rect1
和rect2
为CGRect
矩形,那么rect1 += rect2
在标准Swift中无效。
如果您在工作代码中看到这一点,则意味着他们重载了+=
复合赋值运算符(请参阅documentation)以接受CGRect
并执行自己的自定义函数。知道它的作用的唯一方法是在代码中找到它。
以下是使用+=
的联合函数重载CGRect
代码的代码:
func += (left: inout CGRect, right: CGRect) {
left = left.union(right)
}
如果您在代码库中搜索" inout CGRect
"它的各种排列,你可能会把代码负责,这将有助于弄清楚它的作用。