override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent;
}
在任何ViewController中使用上面的代码将特定视图控制器的statusBar颜色设置为白色在iOS8 for me中不起作用。有什么建议吗?使用UIApplication.sharedApplication方法,在整个应用程序的Info.plist中进行必要的更改后,颜色会发生变化。
// Change the colour of status bar from black to white
UIApplication.sharedApplication().statusBarStyle = .LightContent
如何更改某些必需的和特定于的ViewControllers的状态栏颜色
发布于 2015-02-14 14:59:45
在阅读了所有的建议,并尝试了一些东西之后,我可以使用以下步骤使其适用于特定的视图控制器:
第一步:
打开你的info.plist并插入一个名为“查看基于控制器的状态栏外观”的新键到NO
第二步(只是一个解释,不需要实现它):
通常我们将以下代码放入AppDelegate的应用程序(_:didFinishLaunchingWithOptions:)方法中,
Swift 2
UIApplication.sharedApplication().statusBarStyle = .LightContent
Swift 3
UIApplication.shared.statusBarStyle = .lightContent
但这会影响所有ViewControllers的statusBarStyle
。
所以,如何让它为特定的ViewControllers工作-最后一步:
打开要更改statusBarStyle
的视图控制器文件,并将以下代码放入viewWillAppear()
中。
Swift 2
UIApplication.sharedApplication().statusBarStyle = .LightContent
Swift 3
UIApplication.shared.statusBarStyle = .lightContent
另外,为该特定viewController实现viewWillDisappear()
方法,并放入以下几行代码:
Swift 2
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.Default
}
Swift 3
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.shared.statusBarStyle = UIStatusBarStyle.default
}
此步骤将首先更改特定视图控制器的statusBarStyle
,然后在特定视图控制器消失时将其更改回default
。如果不实现viewWillDisappear()
,statusBarStyle
将永久更改为新定义的UIStatusBarStyle.LightContent
值
发布于 2016-10-28 07:44:42
(截至2021年10月25日)
Swift 5、Swift 4.2、Swift 4
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
.lightContent
}
发布于 2018-11-16 23:19:17
采用NavigationController的Swift 4.2解决方案
第一步:
打开你的info.plist并插入一个名为“查看基于控制器的状态栏外观”的新键,或者将UIViewControllerBasedStatusBarAppearance
设置为YES,让每个VC使用自己的状态属性。
第二步
在每个VC中,覆盖preferredStatusBarStyle属性,如下所示:
override var preferredStatusBarStyle : UIStatusBarStyle {
return .lightContent //.default for black style
}
最后一步
覆盖自定义NavigationController类中的preferredStatusBarStyle属性:
class NavigationController : UINavigationController {
override var preferredStatusBarStyle : UIStatusBarStyle {
if let topVC = viewControllers.last {
//return the status property of each VC, look at step 2
return topVC.preferredStatusBarStyle
}
return .default
}
https://stackoverflow.com/questions/26956728
复制相似问题