从数组联合CGRect

时间:2019-06-15 03:32:31

标签: ios swift

我试图将我从该函数返回的数组中的元素的CGRect信息统一起来。我应该如何只从返回的$PSVersionTable中取出CGRect个对象。然后遍历它们并合并它们。最好的方法是什么?

[UITextSelectionRect] struct

1 个答案:

答案 0 :(得分:0)

这取决于您“联合起来”的意思。

CGRect具有union方法:

let union = rect1.union(rect2)

这将返回一个CGRectrect1紧密结合的

union of two CGRect

并集(绿色阴影矩形)包围了两个输入矩形,但包括了两个输入矩形之外的区域。

因此您可以将此联合操作应用于rect2的数组,如下所示:

CGRect

这将为您提供一个let test = myTextView.selectionRects(for: paragraph.first!.range) .reduce(CGRect.null) { $0.union($1.rect) } ,它紧密地包围了所有选定的文本,但通常还包围了未选定的区域。

如果您想要一个形状完全包围输入矩形并且不包围输入矩形之外的任何区域,那么您想要的是(几何)并集的“轮廓”输入矩形。通常,该轮廓线不是矩形,因此必须使用CGRect而不是CGPath来表示它。

计算一组矩形的轮廓是一个困难得多的问题。幸运的是,我已经在this answer中解决了它。