将状态栏设置为黑色

时间:2016-03-24 18:29:03

标签: ios objective-c uistatusbar

我想将status bar(显示时钟和电池的顶部的小条带)的颜色设置为带有白色文本的黑色背景。我怎么能这样做?

enter image description here

到目前为止我的方法:

我在info.plist

中添加了以下内容
View controller-based status bar appearance --> NO

viewController

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleDefault;
}

然而,风格并没有改变。如何使状态栏变黑?

5 个答案:

答案 0 :(得分:5)

对于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)

答案 1 :(得分:4)

您可以通过调用

使文本变白
UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)

状态栏具有透明背景。没有办法改变这一点。您可以将其下方的视图固定为背景。

答案 2 :(得分:2)

您需要遵循Xcode-8.1和iOS 10中的3个步骤:

enter image description here

enter image description here

enter image description here

最后我们可以得到理想的结果:

enter image description here

答案 3 :(得分:1)

简易解决方案:

转到主故事板(应用程序启动时,在启动完成后加载的故事板),并将顶级UIView的背景颜色更改为黑色。

如果您需要屏幕的其余部分有另一个彩色背景,只需创建另一个UIView作为顶级视图的子视图,将其框架设置为从顶部布局指南下方开始,然后设置它的颜色是你需要的任何颜色。

您仍然需要设置其他答案中提到的plist标志。

答案 4 :(得分:0)

转到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;
}

它为我修复了状态栏颜色。希望它有所帮助。