如何从图层中调整UIView的大小



我有一个层级的UIView。

我正在使用图像创建图层,所以我不知道UIView的最终大小,直到我完成创建图层。

我如何找到一个最终的UIView大小,允许触摸到所有的层?

一个图层可能是矩形的,然后旋转,这样它就会进一步突出,这也使它变得复杂。我不能使用图层的帧大小,因为它的仿射变换。

我确实有一个解决方案,使一个UIView屏幕的大小,我可以添加我所有的calayer到这个UIView,但我将有几组这些层层次结构,我更喜欢在单独的UIView,这样我可以使用UIView手势翻译/缩放/旋转。

您可以使用CGMutablePathRef。然后循环view.layer.sublayers中的所有CALayer -s:

CGPathAddRect(path,
              &transform,
              CGRectOffset(i.bounds,
                           -CGRectGetMidX(i.bounds), 
                           -CGRectGetMidY(i.bounds)));

矩形被偏移到其中心在CGPointZero。这里的transform是图层的旋转(或缩放)加上图层位置的平移。例如:

CGAffineTransform transform =
    CGAffineTransformConcat(CATransform3DGetAffineTransform(i.transform),
                            CGAffineTransformMakeTranslation(i.position.x,
                                                             i.position.y));
最后

:

view.bounds = CGPathGetBoundingBox(path);

边界现在是最小的,并包围所有的图层。

最新更新