直接添加到NavigationController的任何ViewController都有一个灰色状态栏,它与NavigationBar的颜色相匹配。
但每当我显示一个模态时,状态栏是白色的,它与我放在那里的NavigationBar不匹配?
我在这里看到了大量的答案,其中大多数都没有工作,而那些似乎不是很好的解决方案。例如,我不想将每个模态包装在UINavigationController中。
我尝试了以下建议,这也完全摆脱了我的状态栏,而这不是我想要的。
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
那么这里的神奇解决方案是什么?
答案 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];
}