Ios 实时更改状态栏颜色
我正在侧菜单视图控制器()中移动,带有动画。由于侧菜单的背景颜色是深蓝色,我希望状态栏(默认为黑色)在菜单可见时亮起。Ios 实时更改状态栏颜色,ios,swift,uiviewcontroller,statusbar,Ios,Swift,Uiviewcontroller,Statusbar,我正在侧菜单视图控制器()中移动,带有动画。由于侧菜单的背景颜色是深蓝色,我希望状态栏(默认为黑色)在菜单可见时亮起。 在info.plist中,将查看基于控制器的状态栏外观设置为是(也尝试了否),我试图实现以下代码,但不幸的是,这些代码不起作用: UIApplication.shared.statusBarStyle = .lightContent 此外,我尝试了以下方法: override func viewDidLoad() { super.viewDidLoad() s
在
info.plist
中,将查看基于控制器的状态栏外观
设置为是
(也尝试了否
),我试图实现以下代码,但不幸的是,这些代码不起作用:
UIApplication.shared.statusBarStyle = .lightContent
此外,我尝试了以下方法:
override func viewDidLoad() {
super.viewDidLoad()
setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .default
}
你知道怎么做吗?谢谢 请尝试以下代码: 在AppDelegate中:
var navigationBarAppearace = UINavigationBar.appearance()
navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()] // If you want to change title colour
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.Default
//用下面的代码更新你的plist
View controller-based status bar appearance = NO
在ViewController中:
override func viewDidLoad() {
super.viewDidLoad()
// UIApplication.sharedApplication().statusBarStyle = .LightContent
navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.tintColor = UIColor.whiteColor()
navigationController?.navigationBar.translucent = true
}
func sideMenuWillOpen() {
print("sideMenuWillOpen")
UIApplication.sharedApplication().statusBarStyle = .LightContent
}
func sideMenuWillClose() {
print("sideMenuWillClose")
UIApplication.sharedApplication().statusBarStyle = .Default
}
以上代码的输出。您可以使用某种UIAnimation来同步效果
让我知道。如果代码对您有效…则直接更新状态栏样式是无效的,并且在启用基于视图控制器的状态栏外观时将不起作用
相反,每个控制器必须提供其首选的状态栏样式,负责显示每个控制器的框架应实现
childViewControllerForStatusBarStyle
,并为状态栏外观提供正确的子控制器。不幸的是,ENSwiftSideMenu
不支持这一点,因此使用基于视图控制器的状态栏外观很难实现这一点。您应该向原始开发人员提出一个问题,但我建议也切换到一个更好的编写框架。如果我理解正确。您希望您的EnswitftSideMenu状态栏为深蓝色,mainVC状态栏为正常或不同颜色…不,我希望侧菜单显示时状态栏为白色。代码再次更新。希望,这次我理解正确了…谢谢你的努力,但我不想为状态栏设置背景,但状态栏的内容实际上会变亮。