2016-05-29 204 views
5

我正在開發一個擁有60多個屏幕的內容豐富的應用程序 我想在它們之間製作動畫片段而不用製作故事板箭頭或連接來縮小事情,比方說,我只有9個屏幕的應用程序,A,B, C,d,E,F,G,H,I如何添加動畫鏈式過渡系統而不使用故事板segues?

enter image description here

如果我用故事板塞格斯,那麼我就需要使每個屏幕而其它來回......和端之間的連接以意大利麪/蜘蛛的東西,看看這個屏幕,例如,這是因爲幾乎所有的屏幕都可以導致我正在開發的應用程序中的其他屏幕

enter image description here

所以,我需要幫助如下,

1 - 如何讓動畫塞格斯,而不必使用界面生成器連接?

我用的是這個

ram.vc = self.storyboard!.instantiateViewControllerWithIdentifier("MeBeforeSignUp") //MeBeforeSignUp 
ram.vc.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve 
self.presentViewController(ram.vc, animated: true, completion: nil) 

2,如何使其推進棧後退按鈕?爲了解釋這一點,我的意思是,我想繼續在一個很長的序列轉換後面按鈕頂部具有相同的導航順序..

考慮這個序列的導航,從A - > B - > C - > ...

順序:A-> B-> C-> G-> F-> B-> C-> A-> B-> D-> B->ç 我在移動[A]到[C] 現在我在[C],我有一個返回按鈕,可以返回到[B] 現在我在[B],我有一個後退按鈕回到[D] ... 等,直到我到達[A]沒有後退按鈕,因爲堆棧爲空

爲大量屏幕添加此功能的最佳方式是什麼?

3-爲什麼UIModalTransitionStyle不提供很多動畫?

這些只是我的動畫可以自動完成看到

CoverVerticalCrossDissolveFlipHorizontalPartialCurl

4-是否有更多的動畫,我可以使用嗎?

5-爲什麼沒有動畫選項?例如CoverVertical沒有速度和(上下和下到上)

6-例如Twitter的iOS應用程序有這個無限的堆棧系統,你可以去發帖到帖子...幾十在後退按鈕有堆棧系統的時候,我想要的是這個,但是現在我有一個問題,我的問題是不是會衝擊內存? iOS如何管理,以確保應用程序不會因內存溢出而崩潰?

我正在尋找幫助,真的很感激。

回答

2

看看UIViewControllerAnimatedTransitioning協議。這是一個棘手的難題,但一旦你做了,你將能夠創建任何動畫過渡,而不受IB或其默認動畫的約束。

本質上,您將像往常一樣將您的初始視圖控制器嵌入到UINavigationController中。連接AnimatedTransitioning將允許您攔截導航控制器中的每個Push和Pop,並指定他們應該使用什麼動畫。這會給你你想要的自定義動畫,加上正常的導航堆棧。

至於後退按鈕,您可能需要顯示自然包含它的導航欄,或向視圖添加一個按鈕,以便從堆棧中彈出視圖控制器。

-------------編輯逐點回答提供點-------------

  1. 你應該使用我上面提到的UIViewControllerAnimatedTransitioning協議。這是一個很大的話題,但是幸運的是,有充足的教程和對它如何在線工作的解釋。一開始感到困惑,但一旦安定下來就會很棒。不幸的是,這不是一種剪切和粘貼的答案類型。

  2. 如果將您的視圖控制器A嵌入UINavigationController中,您會立即得到此行爲。如果你不想看到屏幕頂部的欄,你可以隱藏它,並在適當時以編程方式調用popViewController方法返回堆棧中的一個viewController。

  3. 模態顯示的視圖控制器不會被添加到導航控制器的堆棧,所以我會避免使用presentViewController或任何模態呈現的轉換。爲了獲得你所追求的行爲,你應該使用導航控制器而不是存在來推送和彈出視圖控制器。我希望他們給我們更多的默認轉換,但我們鼓勵開發人員創建適合他們應用的自定義轉換。

  4. 使用UIViewControllerAnimatedTranisitioning您可以創建幾乎任何你想要的轉換。您可以真正發揮創意,並以這種方式爲您的應用帶來獨特感受。

  5. 與答案4相同。您可以控制轉場中每個動畫的每個方面。這完全是自定義的。

  6. 這是UINavigationController的默認行爲。只要不在堆棧中活動的視圖控制器上留下一堆長時間運行的任務,你應該在內存方面做得很好。反正你不可能這樣做。

+0

謝謝,我希望有人能夠詳細闡述每一個問題,或者提供一些例子。 – DeyaEldeen

+0

有很多UIViewControllerAnimatedTransitioning的教程,並且是單個SO答案的相當廣泛的主題。我將編輯以逐點回答您的問題。 – BJHStudios

+0

@DeyaEldeen增加了一些逐點答案。希望能幫助到你! – BJHStudios