2010-04-29 52 views
0

我有几个用户创建子视图的UIView。用户可以移动和旋转子视图。我使用UIView的transform属性来实现这一点。我想保存“文档”以便稍后重新创建。石英2D - 从变换属性获得旋转角度?

我正在写出transform属性以及其他一些数据。但transform属性是6数字集,而不是我想以某种方式获得用户制作和保存的旋转度数。

是否有任何方法进行变换并返回创建变换的总旋转?显然,当用户在屏幕上移动物体时,很多小变换都完成了。

回答

2

有一种比lucius指出的数学更简单的方法。您可以使用一个辅助的keyPath是核心动画提供提取一个UIView的衬里层的当前旋转:

CGFloat rotationAngle = [[view.layer valueForKeyPath:@"transform.rotation.z"] floatValue]; 

这会给你的看法的当前旋转,弧度。请注意,这将报告第一个顺时针旋转的半圆的正值,第二个为负值,因此您需要在计算中考虑该值。

+0

这很容易实现。谢谢! – agilityvision 2010-05-04 20:22:28

0

是的,在The transformation matrix for an affine transformation上阅读。所以你需要找出变换的象限(它所在的圆的90度截面),并且取sin()(这是余割()的倒数)和cos()的倒数,是矩阵的割线()ac。我自己并没有这样做,但似乎很容易。

+0

自从我做了几何以来已经有一段时间了。当我有时间时,我必须试一试。 – agilityvision 2010-04-30 00:13:38