通过iOS 7更改状态栏背景颜色

Kru*_*nal 15 cocoa-touch ios uistatusbar

我想在iOS 7上更改状态栏的背景颜色,我正在使用此代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [UIApplication sharedApplication].statusBarHidden = NO;

        self.window.clipsToBounds = YES;
        [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleLightContent];
        self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
        self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);

        ...
        ...


}
Run Code Online (Sandbox Code Playgroud)

当我写这个时,它会显示黑色背景的状态栏; 我希望它有一个红色背景.

如何更改状态栏的颜色为红色背景而不是黑色?

Tej*_*ina 27

在iOS 7中处理状态栏的背景颜色时,有两种情况

案例1:使用导航栏查看

在这种情况下,请在viewDidLoad方法中使用以下代码

  UIApplication *app = [UIApplication sharedApplication];
  CGFloat statusBarHeight = app.statusBarFrame.size.height;

  UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarHeight, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
  statusBarView.backgroundColor = [UIColor yellowColor];
  [self.navigationController.navigationBar addSubview:statusBarView];
Run Code Online (Sandbox Code Playgroud)

案例2:没有导航栏的视图

在这种情况下,请在viewDidLoad方法中使用以下代码

 UIApplication *app = [UIApplication sharedApplication];
 CGFloat statusBarHeight = app.statusBarFrame.size.height;

 UIView *statusBarView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
 statusBarView.backgroundColor  =  [UIColor yellowColor];
 [self.view addSubview:statusBarView];
Run Code Online (Sandbox Code Playgroud)


Sah*_*jan 15

在iOS 7及更高版本中,状态栏是透明的.将backgroundColor视图设置为状态栏所需的颜色.

或者,您可以在视图顶部添加一个20px高的红色子视图.

有关更多信息,请参阅Apple Transition Guide.

另外,确保你的preferredStatusBarStyleUIStatusBarStyleLightContent.并在您的Info.plist中将"查看基于控制器的状态栏外观"设置为"否".


小智 8

目标c

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

    [[UIApplication sharedApplication] setStatusBarHidden:false];
    UIView *statusBar=[[UIApplication sharedApplication] valueForKey:@"statusBar"];
    statusBar.backgroundColor = [UIColor redColor];

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];



    return YES;
}
Run Code Online (Sandbox Code Playgroud)

这对我有用.我希望这对你也有帮助.


Ala*_*eng 5

@Teja Kumar Bethina提供的内容很有帮助,但最好从UIApplication单例中获取statusBar的高度,如下所示:

UIApplication *app = [UIApplication sharedApplication];

UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -app.statusBarFrame.size.height, self.view.bounds.size.width, app.statusBarFrame.size.height)];
    statusBarView.backgroundColor = [UIColor blackColor];
Run Code Online (Sandbox Code Playgroud)