2013-02-06 96 views
2

這個問題似乎被問了很多,但我從來沒有找到一個明確的答案,它是否有可能有自定義轉換以同樣的方式做的UIKit。如何創建一個自定義的UIViewController過渡動畫?

我知道你可以做一些技巧,比如截取當前視圖和即將到來的視圖,然後在動畫下更改視圖控制器時爲這些視頻添加動畫。然而,這需要相當多的內存,因爲你已經基本上2個額外的屏幕值得借鑑(因爲截圖)的。

我正在尋找一種更優雅的方式呈現視圖控制器與自定義動畫。或者,有沒有更符合內存效率的方法來實現上述方法?

+0

你是什麼意思的'自定義動畫'?什麼不是' T' – occulus

+0

我的意思是像在'UIModalTransitionStyle'的人。只有建立在那些4,並且似乎沒有要到自定義動畫過渡到別的任何簡單的方法。 –

回答

5

有幾種方法可以完成此操作,具體取決於您希望如何轉換,控制器是否嵌入容器控制器等等。在最簡單的情況下,您擁有單個控制器並且想要轉換到另一個控制器,你可以通過以下步驟來做到:

  1. 實例化新控制器(可以稱之爲B,與原A)
  2. 添加B的視圖作爲窗口的子視圖(從自我得到.view.window)
  3. 將B的框架設置爲屏幕外,其中您想要的方向或使其alpha 0,或使其具有零大小,具體取決於您想要的轉換類型。
  4. 做什麼都轉型要與animateWithDuration:動畫:完成: 刪除的示意圖(在完成塊)在完成塊
  5. ,使B中的窗口的根視圖控制器
1

本質您在系統自動保留和釋放,以盡一切發生列出的電話rdelmar的回答下面一起。轉換視圖控制器只是在讓系統將控制器保存在內存中的同時對視圖進行動畫處理。

但是,要回答您的更多問題,UIView動畫還會創建重複項並緩存圖像。 (順便說一句,系統緩存不會卸載它的內存,所以請避免使用UIImage imageNamed。

如果你想提高效率,你可能想使用計時器自己編寫代碼,並鼓起所有你能想到的圖形技巧。我永遠不會相信iOS會像上一個版本一樣工作我說的所有內容都與iOS 6打破註釋時保留的方式相同,並且手冊中指出iOS 3動畫將變得過時(現在被替換掉了嗎?)gah,只是說要小心效率,如果你嘗試它可能會在更遠的將來被破壞或更新

相關問題