2012-04-20 64 views
1

我有一個關於CATransform3D的問題。CATransform3D旋轉,標籤爲子視圖

我有一個視圖A,它包含一個標籤B. B的圖層位置是A的中心。B用於顯示通知消息。我想旋轉180度,當然B中的文字會顛倒。所以我也必須將B旋轉180度。一切似乎很簡單,實際上在模擬器中它工作正常。

但是當我加載到設備上時,A和B確實旋轉了,但B的位置發生了變化。現在我只能看到B的一半,另一半不在A中。

我的猜測是,當旋轉A時,因爲B與A的座標系相關,翻轉180度,所以B的位置發生了變化。

但我想知道是否有人有想法如何解決這個問題,或者如果你們有更好的方法來處理。

非常感謝。

UPDATE

我仍然無法弄清楚,爲什麼B的位置被移動,但我想出了實現相同動畫的另一種方法。有點棘手。

關鍵是animation.autoreverse,我們知道當您通過Pi旋轉標籤的超級視圖時,標籤中的文本將被上下顛倒。所以我做的是通過Pi/2旋轉超級視圖,保持相同的持續時間並設置autoreverse = YES,它將做的是它將旋轉超級視圖Pi/2,然後將其旋轉回初始狀態。結果證明視圖不會被旋轉,但是對於用戶的視覺而言,它是旋轉的。

回答

0

我發現子圖層和視圖的子視圖並不總是對加倍的動畫(特別是alpha和中心更改)做出反應。如果你必須(因爲它比平常貴一點),使用UIViewAnimationOptionAllowsAnimatedContent,這將強制重繪,而不是動畫的「快照」。

+0

我同意你的意見。但我想找到一種方法讓他們工作。我會更新這個線程,如果我得到任何東西。謝謝你的幫助。 – Jason 2012-04-20 05:12:52

+0

聽起來不錯。 iOS中的動畫很棘手,但是當你做對時,它確實很整潔。 – CodaFi 2012-04-20 05:20:53