簡體   English   中英

iOS Swift TabBar 狀態欄文本顏色故障一半白色一半黑色

[英]iOS Swift TabBar status bar text color glitch half white half black

我正在嘗試將某些視圖控制器上的狀態欄文本更改為白色,但在其他一些視圖控制器上它仍然需要為黑色。 (因此不能為整個應用程序全局更改它)。

一切正常,除了前幾秒鍾,當點擊不同的標簽欄時,出現故障時,狀態欄文本的一半變成黑色,而不是白色。 然后一切都完美更新。

結構是這樣的:一個標簽欄控制器,有幾個標簽,每個標簽包含一個導航控制器,包含一個視圖控制器。

有了導航控制器,就必須更改navigationController?.navigationBar.barStyle = .black以使其工作。

在選項卡上按幾次后,它工作正常。

我做的第一件事當然是將.plist View controller-based status bar appearance設置為YES

我還覆蓋了 preferredStatusBarStyle,使用布爾值來設置哪些視圖控制器應該具有白色或黑色狀態欄文本:

override var preferredStatusBarStyle: UIStatusBarStyle {
    return coloredNavigationBar ? .lightContent : .default
}

var coloredNavigationBar: Bool = true

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    if coloredNavigationBar {
        navigationController?.navigationBar.barStyle = .black
    } else {
        navigationController?.navigationBar.barStyle = .default
    }
    setNeedsStatusBarAppearanceUpdate()
}

粘貼的代碼來自到處使用的基本視圖控制器。

SCREENSHOT - 狀態欄故障演示

是的! @matt 是對的,謝謝。 事實上,iOS 在使用標簽欄時會感到困惑。

解決方案是將其添加到 TabBarController:

override public var childForStatusBarStyle: UIViewController? {
    if let controller  = selectedViewController as? UINavigationController {
        return controller.visibleViewController
    }
    return selectedViewController
}

暫無
暫無

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

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