在 ios 7 中呈现模型视图控制器时出现状态栏问题
Posted
技术标签:
【中文标题】在 ios 7 中呈现模型视图控制器时出现状态栏问题【英文标题】:status bar issue while presenting model view controller in ios 7 【发布时间】:2013-10-20 07:41:24 【问题描述】:我已经回来了
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];
RootViewController *rvc = [[[RootViewController alloc] init] autorelease];
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:rvc] autorelease];
self.window.rootViewController = navController;
[self.window makeKeyAndVisible];
return YES;
View controller-based status bar appearance is YES in plist file
当我推送视图控制器时,状态栏看起来很棒。如下图所示。
但是当我展示 modelviewcontroller 时,它看起来如下。
我在我正在展示的 viewcontroller 的 viewDidLoad 方法中编写了以下代码
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
// ios 7
navBar.frame = CGRectMake(navBar.frame.origin.x, 20, navBar.frame.size.width, 44);
我想在展示模型视图时显示黑色状态栏。但它没有显示。 我试过了
基于视图控制器的状态栏外观在 plist 文件中也是 NO 但它不起作用。
我的代码在所有低于 7.0 的 ios 版本中运行良好,但在 ios 7.0 及更高版本中运行良好。
有什么解决办法吗?如果有人没有收到我的问题,请告诉我。
【问题讨论】:
在 iOS 7 中默认状态栏是透明的。 因此您必须采用高度为 20 的 UIImageview 并将背景颜色设置为黑色。并在大小检查器中设置增量值 -20 【参考方案1】:在this question 中找到了很好的解决方案。
1) 在 info.plist 中将 UIViewControllerBasedStatusBarAppearance 设置为 NO(选择不让视图控制器调整状态栏样式,以便我们可以使用 UIApplicationstatusBarStyle 方法设置状态栏样式。)
2)在AppDelegate的应用:didFinishLaunchingWithOptions,调用
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
[application setStatusBarStyle:UIStatusBarStyleLightContent];
self.window.clipsToBounds =YES;
self.window.frame = CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
return YES;
【讨论】:
以上是关于在 ios 7 中呈现模型视图控制器时出现状态栏问题的主要内容,如果未能解决你的问题,请参考以下文章
使用 Xcode 7、iOS 9 运行项目时出现“应用程序窗口应在应用程序启动结束时具有根视图控制器”错误
iOS,尝试使用 UIGraphicsGetImageFromCurrentImageContext 呈现“变换缩放”视图时出现意外结果