我正在开发一款在IOS6上良好运行的应用程序。但是在iOS7中,状态栏与视图重叠。
例如:
我需要先显示状态栏,然后显示我的图标和删除按钮。请给我任何有关如何消除重叠的想法。
但是我需要这样的效果:
请给我任何解决问题的想法。
例如:
![IOS7](https://istack.dev59.com/sxfvi.webp)
但是我需要这样的效果:
![enter image description here](https://istack.dev59.com/xyI37.webp)
Xcode
有 iOS 6/7 Delta 功能,可以特别解决这个问题。你需要将视图向下移动20个像素,以在 iOS 7 上呈现正确的效果,并为使其兼容 iOS 6,需要将 Delta y 更改为-20。
在 iOS 6 上适当调整视图的高度,您需要设置 Delta height 以及 Delta Y。
你也可以参考这篇文章 - 修复 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);
}
}
}
尝试使用以下代码。将此代码用于您的AppDelegate.m文件中的didFinishLaunching方法中:
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,则需要通过将所有UIView元素向下移动20个点来进行调整。