我有一个层级的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);
边界现在是最小的,并包围所有的图层。