override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent;
}
使用上述代码在任何ViewController中为特定的ViewController设置状态栏颜色为白色,在iOS8中对我来说是行不通的。有什么建议吗?使用UIApplication。shared应用方法,在信息中需要更改后颜色更改。Plist为整个应用程序。
// Change the colour of status bar from black to white
UIApplication.sharedApplication().statusBarStyle = .LightContent
我怎么能改变一些必要的和特定的视图控制器的状态栏颜色?
Swift 4.2解决方案与NavigationController
第一步:
打开你的信息。并插入一个名为“View controller based status bar appearance”或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://coderwall.com/p/dyqrfa/customize-navigation-bar-appearance-with-swift
打开你的信息。Plist和set
UIViewControllerBasedStatusBarAppearance设为false。
在AppDelegate.swift中的第一个函数中,它包含didFinishLaunchingWithOptions,设置你想要的颜色。
UIApplication.sharedApplication()。statusBarStyle = UIStatusBarStyle。LightContent
Swift 3更新*
共享。statusbarstyle = .lightContent
在我的情况下,我使用故事板来组织我的视图控制器。我想改变所有的状态栏风格。
你可以在下面的图片中看到。
Stars View Controller是一个CPBaseNavigationController,而CPBaseNavigationController是UINavigationController的子类。
我试着做下面的步骤:
在AppDelegate.swift func didFinishLaunchingWithOptions中添加
//更改状态栏颜色
UIApplication.sharedApplication()。statusBarHidden = false
UIApplication.sharedApplication()。statusBarStyle = .LightContent
但没有效果。
在StoryBoard中,找到Base Tab BarController(上图)。选择属性检查器,将状态条属性更改为轻内容。太糟糕了,没有效果。
最后我明白了。在我的自定义导航控制器CPBaseNavigationController中添加func preferredStatusBarStyle
override func preferredStatusBarStyle() -> UIStatusBarStyle {
返回.LightContent
}
它工作得很好!
此外,statusBarStyle在9.0中已弃用,你可以使用-[UIViewController preferredStatusBarStyle]。
我在Swift 5、Swift 4.2中使用这种方式。
在Info.plist中添加下一个值:
UIViewControllerBasedStatusBarAppearance = YES
or
UIViewControllerBasedStatusBarAppearance = NO(查看变化)
UIStatusBarHidden = NO
UIStatusBarStyle = UIStatusBarStyleDefault(或设置为UIStatusBarStyleLightContent,如果你想在启动时看到轻状态栏文本)
然后将代码放置到您想要看到浅色内容的特定视图控制器(要看到深色文本,请将preferredStatusBarStyle设置为. darkcontent)。
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
override func viewDidLoad() {
super.viewDidLoad()
if let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as? UIView {
statusBar.backgroundColor = .sunflowerYellow
}
}