我想在视图控制器中调用viewDidLoad()中的函数来设置该视图控制器状态栏的行为。我希望状态栏有3种行为状态:常规,保持亮度,保持黑暗。
// view controller view did load
override func viewDidLoad() {
super.viewDidLoad()
// status bar behavior
// call some function
setNeedsStatusBarAppearanceUpdate()
}
我对枚举没有多少经验所以请告诉我如何完成我想要完成的任务。最后,我只想在viewDidLoad()中调用一个函数,具体取决于我想要的那个视图控制器的状态栏的行为(常规,保持亮,保持黑暗)。
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
}
}
}
非常感谢所有帮助。
答案 0 :(得分:0)
更改枚举函数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
在视图控制器中覆盖以下属性:
override var preferredStatusBarStyle: UIStatusBarStyle {
return statusBarBehavior.statusBar()
}
每当状态栏行为发生变化时,请将statusBarBehavior
值设置为.regular
,.stayLight
或.stayDark
,然后再调用setNeedsStatusBarAppearance()
更新。
此外,如果您还没有这样做,则需要将View controller-based status bar appearance
文件中的Info.plist
密钥设置为YES
。