2009-05-18 43 views
1

文檔說:爲什麼在動畫運行時,presentationLayer的變換代表完成的動畫的狀態?

呈現樹包含目前正在 呈現給用戶作爲一個動畫 發生在 值。例如,爲 圖層的backgroundColor設置 新值會立即更改圖層樹中的 中的值。但是, 表示樹中的 對應圖層中的 backgroundColor值將使用 更新爲向用戶顯示的插值顏色,因爲它們是 。

現在我的核心8小時測試的真相在沙箱中只有一個視圖和一個動畫。在動畫我要求:

CATransform3D currentTransform = [(CALayer的*)[self.layer表示層]變換]

我檢查M11和currentTransform的M12的值,以計算當前的旋轉角度。

當我設置了旋轉90度,兩件事情發生,而動畫發生和尚未完成:

  • 有時我的基礎上,currentTransform計算的角度爲0.0,雖然視圖是由旋轉有些角度,絕對不在0.0。

  • 有時(最常見)它恰好是90度的目標值。

但我從來沒有得到我想要的:動畫中的當前狀態。我在網上搜索了一段時間,開發者似乎很少使用這個。所以這可能是框架中的錯誤或文檔中的錯誤,或者我上面的代碼來獲取當前可見的轉換是完全錯誤的。

+0

正如我回應的評論對我的回答你原來的問題:http://stackoverflow.com/questions/877198/is-there-a-way-to-figure-out-how-many-degrees-an -view-is-rotating-current-durin,我使用張貼在那裏的確切代碼輪詢動畫期間的旋轉,並且每次都給出正確的中間動畫值。你在執行過程中做了一些不同的事情,導致你得到不正確的值。也許你可以在你的問題中提供更多細節,或者鏈接到你的測試應用程序。 – 2009-05-19 18:33:13

回答

1

我知道我已經從表示層拉框架以在動畫期間在屏幕上查找視圖的位置。這絕對有效。

我用它來停止動畫,然後用演示層框架更新當前的視圖。

它應該工作,我想你將需要發佈你的具體代碼來解決這個問題。

相關問題