2010-04-29 36 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