iOS 7 - 模态变化的状态栏颜色?
Posted
技术标签:
【中文标题】iOS 7 - 模态变化的状态栏颜色?【英文标题】:iOS 7 - Status bar color on a modal changes? 【发布时间】:2014-06-23 20:07:45 【问题描述】:任何直接添加到 NavigationController 的 ViewController 都有一个灰色的状态栏,与 NavigationBar 的颜色相匹配。
但是每当我显示一个 Modal 时,状态栏都是白色的,这与我放置在那里的 NavigationBar 不匹配?
我在这里看到了大量的答案,其中大多数都不起作用,而且那些似乎也不是好的解决方案。例如,我不想将每个模式都包装在 UINavigationController 中。
我尝试了以下也被推荐的方法,它完全摆脱了我的状态栏,这不是我想要的。
-(UIStatusBarStyle)preferredStatusBarStyle
return UIStatusBarStyleLightContent;
那么这里的神奇解决方案是什么?
【问题讨论】:
没有解决办法吗?很久没问了,还没有被接受的答案? @elsurudo “例如,我不想将每个模式都包装在 UINavigationController 中”我实际上最终这样做了,因为这是我找到的唯一解决方案,如果我不想要查看导航栏,我只是将其隐藏 【参考方案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
【讨论】:
以上是关于iOS 7 - 模态变化的状态栏颜色?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7:模态视图控制器状态栏颜色错误,但普通视图控制器正确