如何解决在iOS 7中的状态栏重叠问题

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

举个例子 : IOS 7

我需要状态栏第一, 然后我的图标和最后删除。所以请给我任何想法如何删除重叠。

但我需要这个

在这里输入图像说明 请给我任何关于我的问题的想法

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

Xcode iOS 6/7 Deltas是专门用来解决这个问题的。 您必须将视图向下移动20个像素才能在iOS 7上正确显示,为了使其与iOS 6兼容,您将Delta y更改为-20。

在这里输入图像说明

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

你也可以看到这个 – 修复iOS 7状态栏重叠

试试这个代码。在你的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); } 

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