gpt4 book ai didi

ios - 在 Swift 4 中动态更改状态栏颜色

转载 作者:搜寻专家 更新时间:2023-10-30 22:01:52 25 4
gpt4 key购买 nike

我想动态更改 .lightContent.default 之间的状态栏颜色(因为我的背景可以在同一个 ViewController 中更改)。

我试图为此创建一个如下所示的函数:

func changeStatusBar(useDefault: Bool) {
if useDefault {
var preferredStatusBarStyle: UIStatusBarStyle {
return .default
}
} else {
var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
setNeedsStatusBarAppearanceUpdate()
}

但运气不好。我在网上(或 Stackoverflow 上的此处)找到的每份指南都只展示了如何更改状态栏一次,而不是通过函数打开和关闭。

我还在 info.plist 文件中将 View controller-based status bar appearance 设置为 NO

我以前使用的行是 UIApplication.shared.statusBarStyle = .lightContent - 但由于自 iOS9 以来已弃用,我不能再使用它了。

有人知道我如何动态更改它吗?

最佳答案

创建类型为 UIStatusBarStyle 的属性并返回 preferredStatusBarStyle 中的值

您可以随时更改它的值并调用 setNeedsStatusBarAppearanceUpdate()

class ViewController: UIViewController {

override var preferredStatusBarStyle: UIStatusBarStyle {
return self.style
}
var style:UIStatusBarStyle = .default

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

@IBAction func changeStyle(_ sender: UIButton) {
if self.style == .lightContent {
self.style = .default
} else {
self.style = .lightContent
}
setNeedsStatusBarAppearanceUpdate()
}
}
override var preferredStatusBarStyle: UIStatusBarStyle { return self.style }

wont be called if you have embedded your view controller in a navigation controller You should change bar style of your navigation controller

self.navigationController?.navigationBar.barStyle = //newStyle

enter image description here

关于ios - 在 Swift 4 中动态更改状态栏颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51042894/

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