gpt4 book ai didi

ios - 查找CALayer绘制图形上下文的边界框

转载 作者:行者123 更新时间:2023-12-01 18:14:04 24 4
gpt4 key购买 nike

我有一个带有多个子层的CALayerclipsToBoundsNO(默认)。我想将CALayer(包括所有子层)的完整内容绘制到图像上下文中。为此,我需要确定上下文的大小。在CALayer上是否有一种方法可以检索图形上下文所需的大小,以适合所有内容? (也就是超出图层范围的内容)

最佳答案

您可以将边界框计算为图层及其所有子图层的并集。

CGRect boundingBox = myLayer.bounds;
for (CALayer *sublayer in myLayer.sublayers) {
boundingBox = CGRectUnion(boundingBox, sublayer.frame);
}

这是有效的,因为 CGRectUnion返回:

完全包含两个源矩形的最小矩形。

因此,通过结合边界框和每个图层,您将获得一个矩形,它是完全包含所有子图层(以及图层本身)的最小矩形。

请注意, bounds用于层本身,而 frame用于子层。这是因为边界位于图层自己的坐标系中,而框架位于父坐标系中。这意味着子层上的框架位于 myLayer的坐标系中。

还要注意,这不是递归解决方案,因此,如果子层在边界之外具有其自身范围的子层,则此解决方案将无法解决。

关于ios - 查找CALayer绘制图形上下文的边界框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24572321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com