我有幾個用戶創建子視圖的UIView。用戶可以移動和旋轉子視圖。我使用UIView的transform屬性來實現這一點。我想保存「文檔」以便稍後重新創建。石英2D - 從變換屬性獲得旋轉角度?
我正在寫出transform屬性以及其他一些數據。但transform屬性是6數字集,而不是我想以某種方式獲得用戶製作和保存的旋轉度數。
是否有任何方法進行變換並返回創建變換的總旋轉?顯然,當用戶在屏幕上移動物體時,很多小變換都完成了。
我有幾個用戶創建子視圖的UIView。用戶可以移動和旋轉子視圖。我使用UIView的transform屬性來實現這一點。我想保存「文檔」以便稍後重新創建。石英2D - 從變換屬性獲得旋轉角度?
我正在寫出transform屬性以及其他一些數據。但transform屬性是6數字集,而不是我想以某種方式獲得用戶製作和保存的旋轉度數。
是否有任何方法進行變換並返回創建變換的總旋轉?顯然,當用戶在屏幕上移動物體時,很多小變換都完成了。
有一種比lucius指出的數學更簡單的方法。您可以使用一個輔助的keyPath是核心動畫提供提取一個UIView的襯裏層的當前旋轉:
CGFloat rotationAngle = [[view.layer valueForKeyPath:@"transform.rotation.z"] floatValue];
這會給你的看法的當前旋轉,弧度。請注意,這將報告第一個順時針旋轉的半圓的正值,第二個爲負值,因此您需要在計算中考慮該值。
是的,在The transformation matrix for an affine transformation上閱讀。所以你需要找出變換的象限(它所在的圓的90度截面),並且取sin()(這是餘割()的倒數)和cos()的倒數,是矩陣的割線()a
和c
。我自己並沒有這樣做,但似乎很容易。
自從我做了幾何以來已經有一段時間了。當我有時間時,我必須試一試。 – agilityvision 2010-04-30 00:13:38
這很容易實現。謝謝! – agilityvision 2010-05-04 20:22:28