【问题标题】:convertRect fromView not returning correct frame after rotation旋转后convertRect fromView没有返回正确的帧
【发布时间】:2012-05-24 15:17:23
【问题描述】:

我在使用UIView 方法convertRect: fromView: 方法时遇到了问题。情况如下: 我重写了UIView 类来创建一个随用户移动而旋转的视图(非常类似于TaskRabbit 微调器)。为了创建旋转,我在子类视图中添加了一个额外的视图,并旋转了该视图。旋转视图包含明显随旋转子视图旋转的附加子视图。问题是,在子视图被旋转后,我需要找到那些额外的子视图在哪里,相对于 原始覆盖视图 - 而不是旋转的视图。为此,在我的UIView 课程中,我有以下内容:

[self convertRect:currentView.frame fromView:rotationView];

但是,当我打印出转换后的矩形框时,坐标不准确。有没有人在视图旋转后遇到convertRect: fromView: 不准确的问题?

编辑

具体来说,关于点不准确,我什至看不出应该是什么和它是什么之间的关系——即偏离特定角度、x/y 翻转等。例如,应该的点be (25, 195) 在 (325.25, 273.16) 处返回

【问题讨论】:

  • 不准确是什么意思?像几个像素关闭或 x/y 交换或其他什么?

标签: iphone core-animation


【解决方案1】:

我假设您通过对视图应用变换来旋转视图(CGAffineTransform 到视图或 CATransform3D 到层)。这就是导致您的框架出现问题的原因。 UIView frame 的文档说:

警告 如果 transform 属性不是身份转换,则该属性的值未定义,因此应被忽略。

正如您已经看到的,框架的值是未定义的。不过,您仍然可以使用 centerbounds 属性。

【讨论】:

  • 虽然这可能是相关的,但它仍然不能解决问题。我使用 [self convertPoint: currentView.center fromView: rotationView] 尝试了相同的过程,但仍然得到错误的点。
  • 这可能是因为您要转换的视图有一个未定义的框架。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多