2016-09-15 80 views
8

我升級到XCode 8.0/iOS 10,現在我的導航欄的顏色更改動畫不再起作用,它直接更改顏色而沒有任何動畫。動畫導航欄barTintColor在iOS10中不起作用

UIView.animateWithDuration(0.2, animations: { 
    self.navigationController?.navigationBar.barTintColor = currentSection.color! 
}) 

任何人都知道如何解決這個問題?

回答

15

要在iOS10中爲navigationBar的顏色更改設置動畫效果,您需要在動畫塊中設置顏色後調用layoutIfNeeded

示例代碼:

UIView.animateWithDuration(0.5) { 
    self.navigationController?.navigationBar.barTintColor = UIColor.redColor() 
    self.navigationController?.navigationBar.layoutIfNeeded() 
} 

我也想告知蘋果doesn’t officialy support動畫在這樣的屬性,如barTintColor,這樣的方法可以在任何時候中斷。

如果動畫 塊中調用-layoutIfNeeded導航欄上應該更新其背景屬性,但是考慮一下這些特性做自然 ,真的還沒有去過任何形式的擔保 你可以動畫他們中的任何一個。

+0

確實有效,但是我的導航欄的標題也是動畫(我沒有在「animateWithDuration」函數中設置標題,當標題從左上角移動到導航欄的中心時顏色變化是動畫... – Tiois

+0

@Tiois,我認爲這個問題只出現在你的項目中,可能你在相同的佈局週期中設置了標題,檢查你在ViewController中改變的所有屬性我已經在地方創建了測試項目和標題,你可以在這裏檢查它:https://dl.dropboxusercontent.com/u/42855950/test.zip – Vasily

+0

你是對的,設置標題後,我現在在導航上調用layoutIfNeeded(),然後我調用UIView .animateWithDuration函數與layoutIfNeeded(),它工作正常!謝謝。 – Tiois