【iOS開發】修改present出來的ViewController狀態列顏色

KyXu發表於2016-01-26

在開發的過程中,如果我們需要給使用者提供一個瀏覽器功能的支援、又或者需要讓使用者來從系統相簿挑選圖片,那麼利用 UIKit 給我們提供的現成的 SFSafariViewController 和 UIImagePickerController 將是非常方便的事情,但是

    let pc = UIImagePickerController()
    let sf = SFSafariViewController(URL: NSURL(string:""))

像這樣用一行程式碼來建立 ViewController,使我們喪失了進入這個 ViewController 的內部去調節一些東西的機會。

比如說我們整個App都是採用的白色狀態列,而 SFSafariViewController 和 UIImagePickerController 都是預設背景為白色的(即需要一個黑色狀態列,否則使用者看不清內容),這時候我們需要一個預設自身的狀態列永遠為黑色的 SFSafariViewController 或 UIImagePickerController

下面以 UIImagePickerController 為例給出一種解決方案。

class CustomImagePC: UIImagePickerController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.Default, animated: true)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    override func viewWillDisappear(animated: Bool) {
        UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
    }
    
}

如上所示,建立了一個自定義的 UIImagePickerController ,程式碼裡面設定了:這個頁面被載入之後,狀態列設定為黑色,頁面即將消失時,狀態列再轉為白色。呼叫的時候,直接

    let pc = CustomImagePC() 

SFSafariViewController 同理,當然你也可以在這些程式碼裡插入其他內容,如果你想更高程式地定製一個 UIImagePickerController 的話。


相關文章