我正在尝试在滚动开始时将表视图控制器的preferredStatusBarStyle从.lightContent更改为.default? 这是初始状态:
这是最终状态: 我对iOS开发比较陌生。请提供有关如何实现这一目标的详细信息?
谢谢!
答案 0 :(得分:0)
您需要找到一种方法来在视图控制器中的某处存储类型为UIStatusBarStyle
的变量。
然后在视图控制器中添加:
var preferredStatusBarStyle: UIStatusBarStyle {
return statusBarStyleVariable // This is the variable you created
}
如果您想切换样式,只需更改statusBarStyleVariable
的值并执行setNeedsStatusBarAppearanceUpdate()
编辑: 这可以是您的变量代码:
var statusBarStyleVariable: UIStatusBarStyle {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
这样,每当您更改变量的值时,它都会自动刷新。
答案 1 :(得分:-1)
我在侦察一段时间后找到了解决方案......
如果要在视图出现后随时更改状态栏样式,可以使用:
在文件info.list中添加行:查看基于控制器的状态栏外观并将其设置为是
var viewIsDark = Bool()
func makeViewDark() {
viewIsDark = true
setNeedsStatusBarAppearanceUpdate()
}
func makeViewLight() {
viewIsDark = false
setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
if viewIsDark {
return .lightContent
} else {
return .default
}
}
如果您的视图控制器未嵌入导航控制器,则上述代码可以正常工作。如果它嵌入在导航控制器中,请将其添加到视图控制器的底部:
extension UINavigationController
{
override open var preferredStatusBarStyle: UIStatusBarStyle {
// code goes here
}
}