我有一个带有CALayers层次结构的UIView。
我正在使用图像创建图层,因此在完成图层创建之前,我不知道UIView的最终尺寸。
我如何找到允许触摸所有图层的最终UIView尺寸?
由于图层可能是矩形的,然后旋转,因此它会进一步伸出,这也很复杂。由于它的仿射变换,我将无法使用图层的帧大小。
我确实有一个解决方案可以使一个UIView的大小与屏幕相同,我可以将所有的CALayers添加到这个UIView中,但我会有几组这些层次结构,我更喜欢在单独的UIViews中我可以使用UIView手势来翻译/缩放/旋转。
答案 0 :(得分:1)
您可以使用CGMutablePathRef
。然后循环遍历CALayer
中的所有view.layer.sublayers
- 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);
界限现在很小,并且包含所有图层。