2017-02-15 105 views
0

我打電話隱藏分隔線,並保持狀態欄的顏色一樣的導航欄

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default) 
self.navigationController?.navigationBar.shadowImage = UIImage() 
在viewDidLoad中

看起來像這樣:

在導航欄下方的隔板線消失細。問題是,狀態欄變成白色。我希望它保持與導航欄相同的顏色。

如果只是

self.navigationController?.navigationBar.shadowImage = UIImage() 

在viewDidLoad中,看起來是這樣的:

導航欄下面我有一個觀點的顏色與導航欄完全相同的。我想把它融入一個,所以它看起來像導航欄下方的視圖是導航欄的一部分。

回答

1

它正在爲我工​​作。你能檢查這個答案嗎?

self.navigationController?.navigationBar.isTranslucent = false 
self.navigationController?.navigationBar.barTintColor = UIColor.blue 
self.view.backgroundColor = UIColor.blue 
// Add your colour 
+0

'self.navigationController?.navigationBar.isTranslucent = false'完成了這個訣竅。謝謝 – luke

0

你打電話後self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default),因爲你viewController.extendedLayoutIncludesOpaqueBarsNO,所以當你設置了的導航欄不透明的背景圖像時,的導航欄的背景不會從0而是從20開始你的狀態欄變成白色,後面的無狀態欄和狀態欄顯示爲白色。

所以你必須調用viewController.extendedLayoutIncludesOpaqueBars = YES來避免白色的狀態欄。

如果您爲UINavigationBar設置了自定義背景圖像,自定義shadowImage才起作用。