【问题标题】:iOS 7 - Status bar color on a modal changes?iOS 7 - 模态变化的状态栏颜色?
【发布时间】:2014-06-23 20:07:45
【问题描述】:

任何直接添加到 NavigationController 的 ViewController 都有一个灰色的状态栏,与 NavigationBar 的颜色相匹配。

但是每当我显示一个 Modal 时,状态栏都是白色的,这与我放置在那里的 NavigationBar 不匹配?

我在这里看到了大量的答案,其中大多数都不起作用,而且那些似乎也不是好的解决方案。例如,我不想将每个模式都包装在 UINavigationController 中。

我尝试了以下也被推荐的方法,它完全摆脱了我的状态栏,这不是我想要的。

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

那么这里的神奇解决方案是什么?

【问题讨论】:

  • 没有解决办法吗?很久没问了,还没有被接受的答案?
  • @elsurudo “例如,我不想将每个模式都包装在 UINavigationController 中”我实际上最终这样做了,因为这是我找到的唯一解决方案,如果我不想要查看导航栏,我只是将其隐藏

标签: ios ios7 statusbar ios7-statusbar


【解决方案1】:

状态栏颜色取决于视图的顶视图颜色(连接到状态栏的视图)。

如果导航栏连接到状态栏,则状态栏将使用导航栏。

如果导航栏被隐藏,则连接到状态栏的顶视图。状态栏将采用该视图颜色。

因此,如果导航栏不存在,那么您应该更改连接到状态栏的视图的颜色。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    在显示模态视图时执行此代码以强制应用程序更改样式。

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
    

    在 Modals UIViewController 中可能是最好的

    -(void)viewWillAppear:(BOOL)animated
    

    在应用程序列表中你还需要设置

    查看基于控制器的状态栏外观:否

    【讨论】:

    • 不这样做。我在我的modal的viewDidLoad中调用了它,看起来还是一样,这应该和覆盖preferredStatusBarStyle一样
    • 状态栏还是白色的,里面没有内容。全部空白
    • 这会导致一些非常错误的问题,即在应用程序中的任何位置使用 MPMovieController 时状态栏随机出现/消失。
    【解决方案3】:

    不确定这是否是一个好的解决方案。试试类似的东西怎么样:-

    -(void)displayModal{
      AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
      UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
      view.backgroundColor=[UIColor grayColor];
      [delegate.window.rootViewController.view addSubview:view];
      [delegate.window makeKeyAndVisible];
    }
    
    -(void)dismissModal{
      AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
      UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
      view.backgroundColor=[UIColor whiteColor];
      [delegate.window.rootViewController.view addSubview:view];
      [delegate.window makeKeyAndVisible];
    }
    

    【讨论】:

      【解决方案4】:

      尝试在导航控制器的视图上设置背景颜色:

      let navController = UINavigationController(rootViewController: yourController)
      navController.view.backgroundColor = UIColor.blue
      
      // If you also want to set the navigation bar background color:
      navController.navigationBar.backgroundColor = UIColor.blue
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多