簡體   English   中英

迅速的iOS試圖改變某些VC的狀態欄的顏色

[英]swift ios trying to change color of status bar on certain VC's

在我的應用中,我有4個ViewController,在其中兩個中,我將狀態欄從白色更改為黑色,如下所示:

override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)

        UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.Default
    }

    override func viewWillDisappear(animated: Bool) {
        super.viewWillDisappear(animated)

        UIApplication.sharedApplication().statusBarStyle = .LightContent
    }

問題是,如果我在兩個都有狀態欄上方代碼的兩個ViewController之間切換,則將首先變為正確的黑色,但是當進入另一個ViewController時,它將再次變為白色。

如何在某些ViewController上保持狀態欄為白色?

嘗試在VC中添加以下方法。 使用.default或.lightContent更改狀態欄顏色。 我使用Xcode 8和Swift 3進行了測試:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.default;
}

我使用Xcode 7.3.1和Swift 2.3創建了一個新的選項卡式應用程序。 我有兩個選項卡,其中包含與FirstViewController和SecondViewController相關的類。 在FirstViewController中,我添加了以下方法:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.Default;
}

在SecondViewController中,我將背景更改為黑色,並添加了以下方法:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent;
}

最后,我在FirstViewController中添加了兩個按鈕。 一個按鈕以模態形式呈現控制器,而另一個按鈕通過推動呈現。 當我以模態方式呈現視圖時,“ preferredStatusBarStyle”工作,但是當我通過推送呈現時,我需要添加以下代碼行:

self.navigationController?.navigationBar.barStyle = .Black

如果您真的不想覆蓋PreferredStatusBarStyle的委托方法,則仍然可以使用:

UIApplication.sharedApplication().statusBarStyle = .LightContent

通過刪除:

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)

    UIApplication.sharedApplication().statusBarStyle = .LightContent
}

並讓狀態欄通過viewWillAppear中發生的事情進行設置。 顯然,這更容易出錯,但是如果導航相對線性,那么這將是最簡單的解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM