iOS 7 - 模态上的状态栏颜色是否发生变化?

时间:2014-05-07 02:38:37

标签: ios ios7 statusbar ios7-statusbar

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

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

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

我尝试了以下建议,这也完全摆脱了我的状态栏,而这不是我想要的。

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

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

4 个答案:

答案 0 :(得分:4)

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

如果导航栏已连接到状态栏,则状态栏将显示导航栏。

如果隐藏导航栏,则连接到状态栏的顶视图。视图颜色将由状态栏拍摄。

因此,如果没有导航栏,则应更改连接到状态栏的视图的颜色。

希望得到这个帮助。

答案 1 :(得分:0)

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

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

可能是最好的Modals UIViewController

-(void)viewWillAppear:(BOOL)animated

在应用程序plist中,您还需要设置

  

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

答案 2 :(得分:0)

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

-(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];
}

答案 3 :(得分:0)

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

  String[] firstValue ;
  String[] secondValue ;
  Object[] caliculation = readCaliTable.readExcelByColName("Calculations");
  for (int i = 0; i < caliculation.length; i++) {
      System.out.println(caliculation[i]);
      firstValue[i] = caliculation[i].toString().split("\\+")[0];
      secondValue[i] = caliculation[i].toString().split("\\+")[1].split("\\=")[0];
  }