将状态栏设置为黑色
我想将status bar
的颜色(显示时钟和电池的顶部的小条带)设置为带有白色文本的黑色背景。 我怎样才能做到这一点 ?
到目前为止我的方法:
我在info.plist
添加了以下内容
View controller-based status bar appearance --> NO
并在viewController
- (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleDefault; }
但是,风格不会改变。 如何让状态栏变黑?
对于Xcode 8 / iOS 10 / Swift 3:
通过在状态栏下添加彩色UIView,在一个视图上临时更改状态栏背景颜色。 我将这些行放在viewWillAppear()
。 我的色调是白色的,透明度为45%,但您可以放入任何不透明或透明的UIColor值。
let statusView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 20)) statusView.backgroundColor = UIColor.white.withAlphaComponent(0.45) self.view.addSubview(statusView)
如果视图上有导航控制器,则可以将statusView添加到navigationController而不是视图。
您还可以传入UIScreen.main.bounds.size.width作为模拟状态栏背景视图的宽度。 不要硬编码宽度,否则它不适合所有设备。
或者,您也可以使用此代码更改整个应用中的状态栏背景。 请注意,即使放在viewWillAppear()
,而不是viewDidLoad()
,当您向前/向后导航时,其他视图仍将采用更改的状态栏。
let statWindow = UIApplication.shared.value(forKey:"statusBarWindow") as! UIView let statusBar = statWindow.subviews[0] as UIView statusBar.backgroundColor = UIColor.white.withAlphaComponent(0.45)
你可以通过调用使文本变白:
UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
状态栏具有透明背景。 没有办法改变这一点。 您可以将其下方的视图固定为背景。
你需要在Xcode-8.1和iOS 10中遵循3个步骤:
最后我们可以得到理想的结果:
简易解决方案
转到主故事板(在应用程序启动时,在启动完成后加载的那个),并将顶级UIView
的背景颜色更改为黑色。
如果您需要屏幕的其余部分具有另一个彩色背景,只需创建另一个UIView
作为顶级视图的子视图,将其框架设置为从顶部布局指南下方开始,并将其颜色设置为您需要的任何颜色。
您仍然需要设置其他答案中提到的plist标志。
转到Plist文件
a) Set the value "View controller-based status bar appearance" to NO b) Set the value "Status bar style" to UIStatusBarStyleLightContent - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(version) ([[[UIDevice currentDevice] systemVersion] compare:version options:NSNumericSearch] != NSOrderedAscending) if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) { UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, 20)]; view.backgroundColor=[UIColor blackColor]; [self.window.rootViewController.view addSubview:view]; } return YES; }
它为我修复了状态栏颜色。 希望能帮助到你。