整个应用程序中的状态栏颜色

时间:2015-04-15 03:52:41

标签: ios iphone swift ios8 uistatusbar

我使用AppDelegate.swift中的以下代码为我的状态栏添加透明外观:

   statusBar = UIView(frame: CGRectMake(0, 0, self.window!.frame.width, 20))
   statusBar!.backgroundColor = someTransparentColor // customized UIColor
   self.window!.rootViewController!.view.addSubview(statusBar!)

这是我的应用程序的结构:

      X    Y
      |    |
      NC   NC
      |    |
NC -> A -> B -> C       (NC = Navigation Controller)

以上代码适用于视图A,B,C;但不适用于X和Y(这是因为我将statusBar子视图添加到rootViewController)。为了使它适用于X和Y,我能做些什么呢?当然,我可以在每个相应的视图控制器中复制该代码,但我不想避免这种情况!

注意:我有X和Y使用单独的导航控制器,因为我在模板上呈现它们,并且NC可以轻松添加导航栏/工具栏,特别是因为它们是{{1使用静态表。

1 个答案:

答案 0 :(得分:2)

转到您的应用程序info.plist

  1. View controller-based status bar appearance设为NO
  2. Status bar style设为UIStatusBarStyleLightContent
  3. 然后转到您的应用程序的AppDelegate并将以下代码粘贴到您设置Windows的RootViewController的位置。

    #define IS_OS_5_OR_LATER    ([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0)
    #define IS_OS_6_OR_LATER    ([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0)
    #define IS_OS_7_OR_LATER    ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
    #define IS_OS_8_OR_LATER    ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
    
    if (IS_OS_6_OR_LATER)
    {
        UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, [UIScreen mainScreen].bounds.size.width, 20.0)];
        view.backgroundColor = [UIColor blackColor];
        [self.window.rootViewController.view addSubview:view];
    }