如何修复ios 7中的状态栏重叠问题

时间:2014-09-11 07:04:54

标签: ios objective-c ios7 ios6 statusbar

我正在开发一个在IOS6中正常运行的应用程序。但在iOS7中,状态栏与视图重叠。

举个例子: IOS7

我首先需要状态栏,然后我的图标和最后删除。所以请告诉我如何删除重叠。

但我需要这个

enter image description here 请告诉我有关我的问题的任何想法

4 个答案:

答案 0 :(得分:5)

Xcode有iOS 6/7 Deltas,专门用于解决此问题。您必须将视图向下移动20个像素才能在iOS 7上向右移动,并且为了使其与iOS 6兼容,您将Delta y更改为-20。

enter image description here

在iOS 6上正确调整视图的高度您必须设置Delta高度和Delta Y.

你也可以看到这个 - Fix iOS 7 Status bar overlapping

答案 1 :(得分:4)

 -(void)viewWillLayoutSubviews{

 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) 
  {
    self.view.clipsToBounds = YES;
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    CGFloat screenHeight = 0.0;
    if(UIDeviceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation]))
        screenHeight = screenRect.size.height;
    else
        screenHeight = screenRect.size.width;
    CGRect screenFrame = CGRectMake(0, 20, self.view.frame.size.width,screenHeight-20);
    CGRect viewFr = [self.view convertRect:self.view.frame toView:nil];
    if (!CGRectEqualToRect(screenFrame, viewFr))
    {
        self.view.frame = screenFrame;
        self.view.bounds = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    }
  }
}

答案 2 :(得分:1)

试试这段代码。在你的AppDelegate.m中使用此代码进行完成练习:

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

答案 3 :(得分:-1)

这是iOS 7上UIViewController的默认行为。视图将是全屏的,状态栏将覆盖视图的顶部。如果您隐藏了navigationBar,则必须通过移动20个点来调整所有UIView元素。