重叠iOS7视图上的状态栏

时间:2013-09-19 10:42:46

标签: iphone xcode ios7

我在ios6中开发了我的iPad应用程序,但现在我想在ios7中开发该应用程序,我正在使用.xib文件而我没有使用AutoLayout我想在我的应用程序中使用黑色状态栏而我想要使应用程序像ios 6类似,但状态栏在视图上重叠我使用不同的代码,如下面链接

链接1 Position of navigation bar for modal view - iOS7

链接2 iOS 7 - Status bar overlaps the view

先谢谢

enter image description here

4 个答案:

答案 0 :(得分:3)

不会发生,有两种选择:

  1. 使用相应大小的自定义背景图片.IIRC 44(导航栏)+ 20(状态栏)
  2. OR

    1. 使用黑色自定义视图占据20个像素:D

答案 1 :(得分:2)

在iOS 7中,状态栏是透明的,其他栏 - 即导航栏,标签栏,工具栏,搜索栏和范围栏 - 是半透明的。作为一般规则,您希望确保内容填充应用中条形图后面的区域。

因为状态栏是透明的,所以它后面的视图显示出来。状态栏的样式是指其内容的外观,其中包括时间,电池电量和Wi-Fi信号等项目。使用UIStatusBarStyle常量指定状态栏内容应为暗(UIStatusBarStyleDefault)还是亮(UIStatusBarStyleLightContent):

UIStatusBarStyleDefault显示黑暗内容。当轻量级内容位于状态栏后面时使用。 UIStatusBarStyleLightContent显示内容较少。当暗内容位于状态栏后面时使用。

在某些情况下,导航栏或搜索栏的背景图片可以向上延伸到状态栏后面。如果状态栏下方没有栏,则内容视图应使用屏幕的完整高度。

在iOS 7中,您可以从单个视图控制器控制状态栏的样式,并在应用程序运行时进行更改。如果您希望选择不使用此行为并使用UIApplication statusBarStyle方法设置状态栏样式,请将UIViewControllerBasedStatusBarAppearance键添加到应用的 Info.plist 文件并提供值NO

有关如何使用状态栏和导航控制器的更多详细信息,请参阅我的回答here

答案 2 :(得分:1)

请尝试以下操作,不要覆盖状态栏:

[navController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navBar.png"] forBarPosition:UIBarPositionTop barMetrics:UIBarMetricsDefault];

答案 3 :(得分:1)

使用旧样式状态栏的解决方法是修改主视图的框架并将其向下移动20px。这只适用于viewWillAppear函数,但您需要确保调用一次。这更像是一个黑客而不是一个解决方案:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
[self.view setFrame: CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y+20, self.view.frame.size.width, self.view.frame.size.height-20)];
}