在iOS 7 UIStatusBar中,它的设计方式与视图合并如下:
(由TinaTavčar设计的GUI )
这很酷,但是当你在视图的顶部有一些东西时它会使你的视图陷入混乱,并且它会与状态栏重叠.
是否有一个简单的解决方案(例如在info.plist中设置属性)可以改变它的工作方式[不重叠]回到它在iOS6中的状态?
我知道一个更直接的解决方案是self.view.center.x为每个视图控制器提供+ 20个点,但是更改它们会使其他尺寸self.view.center.x变得更大(有不同可能导致自定义segue等问题)并且突然变成一个单调乏味的工作最好避免.
如果有人能为我提供单线解决方案,我真的很高兴.
PS我知道我可以通过做某事来隐藏状态栏
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
Run Code Online (Sandbox Code Playgroud)
在didFinishLaunchingWithOptions方法中,但这是一个解决方法,一个避免问题的捷径,所以我不认为这是一个真正的解决方案.
我正在将我的应用程序迁移到iOS 7.为了处理状态栏问题,我添加了此代码
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f)
{
CGRect frame = self.navigationController.view.frame;
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
frame.origin.y = 20;
}
else
{
frame.origin.x = 20;
}
[self.navigationController.view setFrame:frame];
}
Run Code Online (Sandbox Code Playgroud)
这在正常情况下工作正常.如果我正在更改方向(应用程序仅支持横向方向)或呈现任何视图控制器并关闭模型视图控制器,我的视图控制器对齐方式已更改.状态栏再次与我的视图控制器重叠.这段代码根本不起作用.请指导我修复此状态栏问题.
案例2:这就是我呈现视图控制器的方式
ZBarReaderViewController *reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
reader.supportedOrientationsMask = ZBarOrientationMaskLandscape;
else
reader.supportedOrientationsMask = ZBarOrientationMaskPortrait;
[self presentModalViewController:reader animated:YES];
Run Code Online (Sandbox Code Playgroud)
参考:

提前致谢.