作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 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/
我是一名优秀的程序员,十分优秀!