获取正在旋转的视图内的子视图框架(CGAffineTransform)

Get frame of subview inside a view that's being rotated (CGAffineTransform)

我有一个类似的问题,这里提出了解决方案:

我有一个包含内部视图的外部视图。外部视图正在使用 CGAffineTransform 旋转(持续不断的动画)。我想计算相对于旋转的外部视图的内部视图的框架(-> 实际显示的内部视图的框架,因为它与外部视图一起旋转)。

我不太理解 UIKit 的这些 convert() 方法。我从来不知道它是从哪个坐标系转换过来的。另外,问题的解决方案对我不起作用,它给了我一个错误的框架。

如果有任何帮助,我将不胜感激。 谢谢!

听起来你的情况是这样的:

根据定义,innerView "relative to the outer view" 的框架没有改变,因为它的框架是在其父视图的坐标 space 中指定的。所以也许您正在寻找它相对于封闭的 rootView 的框架。这是一个有趣的问题,因为它不再是轴对齐的,因此在某种意义上 "undefined"。 (有关非身份 transform 的 UIView frame 属性 的文档,请参阅文档。)

我不确定如果你在这个非轴对齐的矩形上 运行 innerView.convert (innerView.frame, to: rootView) 你会得到什么。也许是这样的:

但是,您可以很容易地请求 innerView 相对于 rootView 的左上角或中心,如下所示:innerView.convert (innerView.frame.origin, to: rootView).