更改状态栏颜色Objective-C

时间:2017-02-21 11:57:46

标签: ios objective-c xcode

在我的应用程序中,有一个黑暗模式,我想知道如何更改状态栏颜色? 谢谢,

UIColor *color = [UIColor whiteColor];
self.navigationController.navigationBar.barTintColor = color;

7 个答案:

答案 0 :(得分:18)

可能会在didFinishLaunchingWithOptions AppDelegate.m方法中的代码行下方提供帮助:

[[UIApplication sharedApplication] setStatusBarHidden:NO];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];

if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {

    statusBar.backgroundColor = [UIColor whiteColor];//set whatever color you like
}

答案 1 :(得分:2)

一种简单有效的方法是向info.plist添加属性,并将状态栏样式设置为UIStatusBarStyleLightContent

This works like a charm

我们应该做的是:

  • 首先打开应用的info.plist文件,然后添加属性UIViewControllerBasedStatusBarAppearance并将其值设置为NO
  • 接下来前往您的Appdelegate或任何类文件,并使用以下代码:

    UIApplication.sharedApplication.statusBarStyle = UIStatusBarStyleLightContent;
    

    编写代码的另一种方法是:

    [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleLightContent];
    

答案 2 :(得分:2)

好的,根据Apple Docs setStatusBarStyle:animated:自iOS 9.0以来已被弃用,您现在应该改为使用此代码:

-(UIStatusBarStyle)preferredStatusBarStyle 
{
return UIStatusBarStyleLightContent;
}
祝你好运,编码愉快! :)

答案 3 :(得分:1)

Swift 3解决方案:
在需要非默认状态栏外观的视图控制器中,使用以下命令:

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

答案 4 :(得分:1)

在plist中添加这些行

DataSet<Row> (= DataFrame)

答案 5 :(得分:0)

这对我有用。

单击导航栏->样式->默认 然后选择“半透明”,然后在该“ Bar Tint”下方->(选择所需的任何颜色)

答案 6 :(得分:0)

自从iOS 13发布以来,我们不得不借助status bar的新属性,将以下代码放置在

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

if (@available(iOS 13.0, *)) {

        UIView *statusBar = [[UIView alloc]initWithFrame:[UIApplication sharedApplication].keyWindow.windowScene.statusBarManager.statusBarFrame];

        if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {

            statusBar.backgroundColor = [UIColor whiteColor];

        }

        [[UIApplication sharedApplication].keyWindow addSubview:statusBar];



    } else {
        UIView *statusBar = [[UIView alloc]initWithFrame:[UIApplication sharedApplication].keyWindow.frame];

        if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {

            statusBar.backgroundColor = [UIColor whiteColor];

        }

    }

这可以解决在iOS 13中发生的崩溃并为其他iOS版本设置框架