gpt4 book ai didi

iOS:使用 UINavigationBarAppearance 时指定状态栏文本颜色现在 barstyle 被忽略

转载 作者:行者123 更新时间:2023-12-05 00:23:04 25 4
gpt4 key购买 nike

问题
我有一个应用程序,它为不同的流程提供不同颜色的导航栏。一些导航栏有浅色背景,需要黑色状态栏文本。其他的导航栏较暗,需要白色的状态栏文本。
作为迁移到 iOS15 的一部分,我更新了我正在开发的应用程序以使用 UINavigationBarAppearance导航栏样式的方法。
除了状态栏颜色之外,我可以像以前一样设置所有样式。

以前我一直在使用barStyle导航栏上的属性设置状态栏文本颜色。

navigationBar.barStyle = .black
这在使用 UINavigationBarAppearance 时似乎不起作用.
示例代码
旧样式方法
    override func viewDidLoad() {
super.viewDidLoad()

let navigationBar = navigationController?.navigationBar

// Style using old approach
navigationBar?.barTintColor = UIColor.purple
navigationBar?.titleTextAttributes = [.foregroundColor: UIColor.white]

// Use barStyle to set status bar text color to white
// This only work when using the old styling approach
navigationBar?.barStyle = .black
}
enter image description here
新造型方法
    override func viewDidLoad() {
super.viewDidLoad()

let navigationBar = navigationController?.navigationBar

// Style nav bar using new Appearance API
let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.backgroundColor = UIColor.purple
navBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.white]

navigationBar?.standardAppearance = navBarAppearance
navigationBar?.scrollEdgeAppearance = navBarAppearance

// Use barStyle to set status bar text color to white
// This only work when using the old styling approach
navigationBar?.barStyle = .black
}
enter image description here
备择方案
在导航栏上强制使用暗/亮模式
可以使用属性 overrideUserInterfaceStyle 将状态栏文本设置为白色。 .要使状态栏文本变白,请设置
navigationBar.overrideUserInterfaceStyle = dark
但是,这会导致导航栏中按钮的菜单也处于黑暗模式,这不是我想要的。
enter image description here
子类 UINavigationController
我想我也可以继承 UINavigationController 并明确覆盖 preferredStatusBarStyle强制使用黑色或白色文本。
我们必须在任何地方都使用子类来创建新的导航 Controller 来指定状态栏文本颜色似乎有点极端。
还要别的吗?
我不确定是否有更好的方法来解决这个问题?

最佳答案

我能够使用以下方法将状态栏文本设置为白色:

navController.navigationBar.overrideUserInterfaceStyle = .dark
请注意,此问题的创建者 Bencallis 警告说,此解决方案“导致导航栏中按钮的菜单也处于黑暗模式,这不是我想要的”。我不使用这样的菜单,所以这对我来说不是问题。也许它也不适合你。

关于iOS:使用 UINavigationBarAppearance 时指定状态栏文本颜色现在 barstyle 被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69404806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com