iOS 获取子视图的旋转
Posted
技术标签:
【中文标题】iOS 获取子视图的旋转【英文标题】:iOS Get Subview's Rotation 【发布时间】:2012-04-20 22:50:05 【问题描述】:我正在使用CGAffineTransformMakeRotation
使用其transform
属性来旋转子视图。稍后,我需要找出子视图旋转了多远。我意识到我可以简单地使用 int 来跟踪这一点,但是有没有一种简单的方法来获取子视图的当前旋转?
【问题讨论】:
重复的问题在:***.com/questions/2051811/… 看看我的answer 到@TheKraken 提到的question。 【参考方案1】:CGAffineTransformMakeRotation
是 explicitly defined 以返回一个矩阵,其中 cos(angle) 在变换的 a
值中, sin(angle) 在 b
等中(并且,鉴于变换的工作方式,这是唯一的它真正可以做的事情)。
因此,您可以通过一些简单的反三角函数来计算当前旋转。 atan2
可能是要使用的东西,因为它会自动正确地找出象限。
所以,例如
- (float)currentAngleOfView:(UIView *)view
CGAffineTransform transform = view.transform;
return atan2f(transform.b, transform.a);
因为这将产生一个反正切,这将涉及以适当的方式划分 a
和 b
字段,即使您应用缩放,该方法也将继续有效(只要每个轴都相同) ) 或翻译。
如果您想应用更复杂或任意的转换,那么事情会变得复杂得多。你会想看看如何计算正态矩阵。根据记忆,我认为您会想要辅助词,这听起来很有趣。
【讨论】:
以上是关于iOS 获取子视图的旋转的主要内容,如果未能解决你的问题,请参考以下文章