繁体   English   中英

iOS获取子视图的旋转

[英]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);
}

因为这将产生一个反切线,将涉及以适当的方式划分ab字段,所以即使您应用缩放(只要每个轴都相同)或平移,该方法也将继续起作用。

如果要应用更复杂或任意的转换,则事情会变得更加复杂。 您将要看一下如何计算普通矩阵。 从记忆中,我认为您会需要这个陪审员,这听起来很有趣。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM