2015-08-25 25 views
0

我使用自定義的UINavigationController類在導航欄中放置顏色漸變。自定義navclass確定導航欄的框架大小,然後將漸變放入。問題是,當我從肖像旋轉到風景時,漸變只填充風景條的肖像部分。我只將自定義的UINavigationController類分配給故事板中的導航視圖。Swift - 在UINavigationController類中旋轉時發生的幀問題

所以我猜我需要調用一個刷新的自定義navclass框架大小,當一個旋轉完成,但我不知道如何或在哪裏?

以下是自定義navclass的override func viewDidLoad()中的相關代碼片段。

let gradientlayer = CAGradientLayer() 
gradientLayer.frame = self.navigationBar.bounds 
self.navigationBar.layer.inserSublayer(gradientLayer, atIndex: 1) 

我試着把它放在viewWillAppear()裏面,但那不起作用。任何幫助?

回答

0

viewDidLoad()viewWillAppear()不會在循環中調用,所以您的代碼將不會更新那裏的框架。

您應該將gradientLayer.frame = self.navigationBar.bounds添加到viewWillLayoutSubviews(),但將其他代碼留在viewDidLoad()中,這樣您就不會收到多個漸變圖層。

+0

@Aaron_Brager - 非常好。謝謝你的幫助。 – Shane

相關問題