[英]iOS Get Subview's Rotation
我正在使用CGAffineTransformMakeRotation
使用其transform
属性旋转子视图。 以后,我需要找出子视图旋转了多远。 我意识到我可以简单地使用int来跟踪此情况,但是有没有一种简单的方法来获取子视图的当前旋转?
CGAffineTransformMakeRotation
被明确定义为返回一个矩阵,其中变换的a
值为cos(angle), b
sin(angle)等等(并且,鉴于变换的工作方式,这是它唯一可以做的事情)。
因此,您可以通过执行一些简单的逆三角法来计算当前旋转。 atan2
可能是要使用的东西,因为它会自动找出合适的象限。
所以,例如
- (float)currentAngleOfView:(UIView *)view
{
CGAffineTransform transform = view.transform;
return atan2f(transform.b, transform.a);
}
因为这将产生一个反切线,将涉及以适当的方式划分a
和b
字段,所以即使您应用缩放(只要每个轴都相同)或平移,该方法也将继续起作用。
如果要应用更复杂或任意的转换,则事情会变得更加复杂。 您将要看一下如何计算普通矩阵。 从记忆中,我认为您会需要这个陪审员,这听起来很有趣。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.