【问题标题】:Get frame of subview inside a view that's being rotated (CGAffineTransform)获取正在旋转的视图中的子视图框架 (CGAffineTransform)
【发布时间】:2017-10-03 18:47:49
【问题描述】:

我有一个类似的问题,这里提出了解决方案: https://stackoverflow.com/a/16511494/3134192

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

我不太了解UIKit 的这些convert() 方法。我从来没有得到它从哪个坐标系转换到哪个坐标系。此外,问题的解决方案对我不起作用,它给了我一个不正确的框架。

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

【问题讨论】:

标签: ios swift cgaffinetransform


【解决方案1】:

所以听起来你有这样的情况:

根据定义,innerView“相对于外部视图”的框架是不变的,因为它的框架是在其父视图的坐标空间中指定的。所以也许你正在寻找它相对于封闭的 rootView 的框架。这是一个有趣的问题,因为它不再是轴对齐的,因此在某种意义上是“未定义的”。 (有关非身份 transform 的 UIView 的 frame 属性,请参阅文档。)

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

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

【讨论】:

  • 当,我想我现在明白了。既然你提到它,很明显 innverView 的框架没有改变(可能 outerView 的坐标系与视图本身一起旋转,对吧?)。感谢您的澄清! (这张照片真的很有帮助:D)。这对我帮助很大!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多