Iphone 与视图iOS7上的状态栏重叠

Iphone 与视图iOS7上的状态栏重叠,iphone,xcode,ios7,Iphone,Xcode,Ios7,我已经在ios6中开发了我的iPad应用程序,但现在我也想在ios7中开发该应用程序,我使用的是.xib文件,而不是自动布局我想在我的应用程序中使用黑色的状态栏,我想使应用程序类似于ios 6,但状态栏在视图上重叠我使用不同的代码,如下面的链接 链接1 链接2 提前谢谢 请尝试以下操作,不要覆盖状态栏: [navController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navBar.png"] forBarPositi

我已经在ios6中开发了我的iPad应用程序,但现在我也想在ios7中开发该应用程序,我使用的是.xib文件,而不是自动布局我想在我的应用程序中使用黑色的状态栏,我想使应用程序类似于ios 6,但状态栏在视图上重叠我使用不同的代码,如下面的链接

链接1

链接2

提前谢谢


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

[navController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navBar.png"] forBarPosition:UIBarPositionTop barMetrics:UIBarMetricsDefault]; [navController.navigationBar setBackgroundImage:[UIImage ImageName:@“navBar.png”]forBarPosition:UIBarPositionTop barMetrics:UIBarMetricsDefault];
请尝试以下操作以不覆盖状态栏:

[navController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navBar.png"] forBarPosition:UIBarPositionTop barMetrics:UIBarMetricsDefault]; [navController.navigationBar setBackgroundImage:[UIImage ImageName:@“navBar.png”]forBarPosition:UIBarPositionTop barMetrics:UIBarMetricsDefault];
不会发生,有两种选择:

  • 使用相应大小的自定义背景图像。。IIRC 44(导航栏)+20(状态栏)
  • 使用自定义视图(黑色:D)说明20个像素

  • 不会发生,有两种选择:

  • 使用相应大小的自定义背景图像。。IIRC 44(导航栏)+20(状态栏)
  • 使用自定义视图(黑色:D)说明20个像素

  • 在iOS 7中,状态栏是透明的,其他栏(即导航栏、选项卡栏、工具栏、搜索栏和范围栏)是半透明的。作为一般规则,您需要确保内容填充应用程序中的栏后区域

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

    UIStatusBarStyleDefault
    显示黑色内容。当灯光内容位于状态栏后面时使用。
    UIStatusBarStyleLightContent
    显示灯光内容。当黑色内容位于状态栏后面时使用

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

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


    有关如何将状态栏与导航控制器一起使用的更多详细信息,请参阅我的答案。

    在iOS 7中,状态栏是透明的,其他栏(即导航栏、选项卡栏、工具栏、搜索栏和范围栏)是半透明的。作为一般规则,您需要确保内容填充应用程序中的栏后区域

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

    UIStatusBarStyleDefault
    显示黑色内容。当灯光内容位于状态栏后面时使用。
    UIStatusBarStyleLightContent
    显示灯光内容。当黑色内容位于状态栏后面时使用

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

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


    有关如何将状态栏与导航控制器一起使用的更多详细信息,请参阅我的答案。

    使用旧式状态栏的解决方法是修改主视图的框架并将其向下移动20像素。这只适用于ViewWillAppeard函数,但您需要确保调用此函数一次。这与其说是解决方案,不如说是黑客手段:

    - (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)];
    }
    

    使用旧式状态栏的一种解决方法是修改主视图的框架并将其向下移动20像素。这只适用于ViewWillAppeard函数,但您需要确保调用此函数一次。这与其说是解决方案,不如说是黑客手段:

    - (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)];
    }
    

    如果我们使用44+20像素,那么我们必须更新我们在xib文件中使用的所有UI对象。所以我不认为这是正确的做法。@daij Djan感谢重播,但我对io6和ios7有一个xib,如果我对ios7的xib进行了调整,即向上或向下调整44像素,那么对ios6也有影响,我不想这样做:)@daij Djan:我认为根据评论,如果我们将顶栏图像调整为+20(状态栏高)然后如果我们必须对背景图像进行-20px的处理,那么它就可以工作了。谢谢:)如果用户使用的是iPhone4或iPhone7,那么20是不变的吗?如果我们使用44+20像素,那么我们必须更新我们在xib文件中使用的所有UI对象。所以我不认为这是正确的做法。@daij Djan感谢重播,但我对io6和ios7有一个xib,如果我对ios7的xib进行了上下44像素的调整,那么对ios6也会产生影响,我不想这样做:)@daij Djan:我认为按照co