2015-11-02 40 views
0

我剛剛開始玩iOS,所以假設一點知識。我們使用的是xib,而不是故事板,還有一個自定義的tabbar。當我們切換到新的導航控制器和相關聯的視圖與Swift自定義TabBar控制器:停止初始加載佈局的動畫

self.addChildViewController(viewController) 
viewController.view.frame = self.containerView.bounds 
viewController.view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 
self.containerView.addSubview(viewController.view) 
viewController.didMoveToParentViewController(self) 
selectedViewController = viewController 

我們第一次這樣做,存在着發生填補導航欄的動畫(來自左側)和視圖(來自上述)。第二次沒有動畫。無論如何,我可以跳過初始加載時發生的動畫嗎?

我假設viewDidLoad有一些內置的默認動畫來解釋這個,如果視圖還沒有初始化。我最初以爲我可以叫我的導航控制器的這種方法,當我在該應用程序的開始創建它們像這樣

UINavigationController(rootViewController: AMRLoginViewController()) 

然後遍歷它們調用viewDidLoad中。

但是,遇到與代表和可選值相關的錯誤被設置爲零。

+2

viewDidLoad是系統調用的委託方法。自己打電話絕不是一個好主意。那動畫聽起來不像我知道的任何系統動畫。 – beyowulf

+0

如果它不是系統動畫是什麼?我實際上碰到過好幾次,而在iOS上玩的時候,當一個視圖被加載時,它的所有元素都將從屏幕外某處運行。僅使用此自定義菜單視圖實現tho。 – Morgan

+0

對。我正在談論「導航欄(來自左側)和視圖(來自上面)」我無法想到系統動畫的視圖「來自上面」。你寫了所有你使用的視圖控制器嗎?他們有任何自定義動畫嗎?你知道有哪些應用程序在你看到這個動畫的同時還會改變UITabBar中的標籤嗎?在UITabBarController中沒有更改選定視圖控制器的默認動畫。 – beyowulf

回答

1

viewDidLoad是系統調用的委託方法。自己打電話絕不是一個好主意。那動畫聽起來不像我知道的任何系統動畫。

我會看看UIViewController的生命週期方法viewDidLayoutSubviews,viewWillAppear,viewDidAppear並檢查幀或約束是否在動畫塊中被更改。