在 table 视图中开始滚动后,如何将 UIStatusBarStyle 从 .lightContent 更改为 .default?
How to change UIStatusBarStyle from .lightContent to .default after scrolling starts in a table view?
我想在滚动开始时将 table 视图控制器的 preferredStatusBarStyle 从 .lightContent 更改为 .default?
这是初始状态:
这是最终状态:
我对 iOS 开发比较陌生。请提供有关如何实现此目的的详细信息?
谢谢!
您需要找到一种方法来将 UIStatusBarStyle
类型的变量存储在视图控制器中的某处。
然后在您的视图控制器中添加:
var preferredStatusBarStyle: UIStatusBarStyle {
return statusBarStyleVariable // This is the variable you created
}
当您想切换样式时,只需更改 statusBarStyleVariable
的值并执行 setNeedsStatusBarAppearanceUpdate()
编辑:
这可以是您的可变代码:
var statusBarStyleVariable: UIStatusBarStyle {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
这样,只要您更改变量的值,它就会自动刷新。
摸索了一段时间,找到了解决方案....
如果您想在视图出现后随时更改状态栏样式,您可以使用此方法:
在文件 info.list 中添加行:View controller-based status bar appearance 并将其设置为 YES
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
}
}
我想在滚动开始时将 table 视图控制器的 preferredStatusBarStyle 从 .lightContent 更改为 .default?
这是初始状态:
这是最终状态:
谢谢!
您需要找到一种方法来将 UIStatusBarStyle
类型的变量存储在视图控制器中的某处。
然后在您的视图控制器中添加:
var preferredStatusBarStyle: UIStatusBarStyle {
return statusBarStyleVariable // This is the variable you created
}
当您想切换样式时,只需更改 statusBarStyleVariable
的值并执行 setNeedsStatusBarAppearanceUpdate()
编辑: 这可以是您的可变代码:
var statusBarStyleVariable: UIStatusBarStyle {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
这样,只要您更改变量的值,它就会自动刷新。
摸索了一段时间,找到了解决方案....
如果您想在视图出现后随时更改状态栏样式,您可以使用此方法:
在文件 info.list 中添加行:View controller-based status bar appearance 并将其设置为 YES
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
}
}