在 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 中呈现模型视图控制器时出现状态栏问题的主要内容,如果未能解决你的问题,请参考以下文章

从视图控制器呈现导航视图 - IOS 7

呈现视图控制器时出现黑屏

使用 Xcode 7、iOS 9 运行项目时出现“应用程序窗口应在应用程序启动结束时具有根视图控制器”错误

呈现视图控制器时出现问题

iOS,尝试使用 UIGraphicsGetImageFromCurrentImageContext 呈现“变换缩放”视图时出现意外结果

渲染故事板时出现 IBDesignable 错误