gpt4 book ai didi

ios - 使用枚举来执行函数?

转载 作者:行者123 更新时间:2023-11-28 08:04:09 24 4
gpt4 key购买 nike

我想在 View Controller 中调用 viewDidLoad() 中的函数来设置该 View Controller 状态栏的行为。我希望状态栏有 3 种行为状态:常规、保持亮、保持暗。

// view controller view did load
override func viewDidLoad() {
super.viewDidLoad()

// status bar behavior
// call some function
setNeedsStatusBarAppearanceUpdate()

}

我对枚举没有太多经验,所以请告诉我如何完成我想要完成的事情。最终,我只想调用 viewDidLoad() 中的一个函数,具体取决于我希望该 View Controller 的状态栏的行为(常规、保持亮、保持暗)。

enum statusBarBehavior {

case regular
case stayLight
case stayDark

func statusBar() {

switch self {

// changes status bar depending on a variable
case .regular:
if nightTime == true {
UIApplication.shared.statusBarStyle = .lightContent
} else {
UIApplication.shared.statusBarStyle = .default
}

// permanently keeps status bar light
case .stayLight:
UIApplication.shared.statusBarStyle = .lightContent

// permanently keeps status bar dark
case .stayDark:
UIApplication.shared.statusBarStyle = .default

}

}

}

非常感谢所有帮助。

最佳答案

更改枚举函数 statusBar() 以简单地返回状态栏样式:

enum StatusBarBehavior {
case regular
case stayLight
case stayDark

func statusBar() -> UIStatusBarStyle {
switch self {

// changes status bar depending on a variable
case .regular:
if nightTime == true {
return .lightContent
} else {
return .default
}

// permanently keeps status bar light
case .stayLight:
return .lightContent

// permanently keeps status bar dark
case .stayDark:
return .default
}
}
}

创建一个属性来存储您想要的枚举值:

var statusBarBehavior = StatusBarBehavior.regular

在您的 View Controller 中覆盖以下属性:

override var preferredStatusBarStyle: UIStatusBarStyle {
return statusBarBehavior.statusBar()
}

每当状态栏行为发生变化时,将 statusBarBehavior 值设置为 .regular.stayLight.stayDark 然后调用 setNeedsStatusBarAppearance() 更新。

此外,如果您还没有这样做,您需要将 Info.plist 文件中的 View controller-based status bar appearance 键设置为

关于ios - 使用枚举来执行函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45679734/

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