2016-09-25 31 views
2

我發現很難以編程方式更改狀態欄樣式。狀態欄樣式 - Swift 3 - 隨時更改

我看到如何使用的組合靜態設置它爲每個視圖控制器(在ViewController.swift):

override var preferredStatusBarStyle: UIStatusBarStyle { 
    return UIStatusBarStyle.default 
} 

和(在info.plist中):

View controller-based status bar appearance = YES 

...

我期待着隨時改變它!

回答

5

相當多的挖掘後找到答案!

集(在info.plist中):

View controller-based status bar appearance = NO 

和刪除(在ViewController.swift):

override var preferredStatusBarStyle: UIStatusBarStyle { 
    return UIStatusBarStyle.default 
} 

...

現在,您可以使用(在ViewController.swift):

UIApplication.shared.setStatusBarStyle(UIStatusBarStyle.lightContent, animated: true) 

而且,最初設置樣式爲每個視圖控制器,使用viewDidAppear:

override func viewDidAppear(_ animated: Bool) { 
    UIApplication.shared.setStatusBarStyle(UIStatusBarStyle.lightContent, animated: false) 
} 
+2

這似乎在iOS版9被棄用,它說,使用的UIViewController - preferredStatusBarStyle代替。但我無法讓它工作。你找到了解決辦法嗎? – Fri3ndlyGerman

+0

^嘗試設置(在Info.plist中)「基於視圖控制器的狀態欄外觀=是」,然後在每個視圖控制器中覆蓋preferredStatusBarStyle變量:) –

+0

@iOSwarrior當您在視圖中有導航欄時,它不起作用。 使用「UIApplication.shared.statusBarStyle = .default」而不是 – GMHSJ

5

SWIFT 3

1.更改在的info.plist行查看基於控制器的狀態欄外觀設置爲

2.更改爲appDelegate.swift在didFinishLaunchingWithOptions

UIApplication.shared.statusBarStyle = .lightContent