【问题标题】:status bar overlaps with the app view in iOS 7 with xcode5状态栏与 iOS 7 中使用 xcode5 的应用程序视图重叠
【发布时间】:2013-10-02 23:29:43
【问题描述】:

我将我的 iPhone 和 xcode 升级到 iOS7 和 XCODE 5。在此之后,我注意到的第一件事是状态栏与应用的视图区域重叠。

我通读了 stackoverflow 上发布的各种解决方案,例如将 plist 文件与 UIViewControllerBasedStatusBarAppearance 设置为 NO 等。似乎没有什么对我有用。我花了将近4天的时间研究它,但无法解决。

我现在想知道有一个类似 iOS 6 的视图,其中我们在顶部显示一个黑色区域,或者完全摆脱状态栏,或者在 iOS 7 上执行此操作的确切方法是什么。

任何帮助将不胜感激。

【问题讨论】:

标签: iphone ios objective-c xcode


【解决方案1】:

尝试在每个Controller类的loadView中添加这段代码..

- (void)loadView {
    [super loadView];
    if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) {
        self.edgesForExtendedLayout = UIRectEdgeNone;
        self.extendedLayoutIncludesOpaqueBars = YES;
    }

    // Rest of your code...
}

此代码修复了 iOS-7 上的问题。 if 条件确保它在 iOS-6 及更低版本中被忽略..

【讨论】:

  • 感谢您的回复。我在我的 controller.m 文件中添加了这段代码。但是,状态栏仍然显示在视图区域。我调试了代码是否正在执行,确实如此。但是在添加代码之前,我看不到它的显示方式有任何变化。 :((
【解决方案2】:

只需将视图的 y 坐标设置为 20。

CGRect frame = [self.view frame];
frame.origin.y = 20;
[self.view setFrame:frame];

我尚未对此进行测试,但它可能会起作用:

UIView *statusBarBack = [[UIView alloc] initWithFrame:CGRectMake(0, -20, 320, 20)];
[statusBarBack setBackgroundColor:[UIColor blackColor]];
[self.view addSubview:statusBarBack];

【讨论】:

  • 您好 Cabellicar123,感谢您的回复。我尝试在视图控制器的 viewDidLoad 方法中添加代码,如下所示: CGRect frame = [self.view frame]; frame.origin.x = 20; [self.view setFrame:frame];它没有工作:(
  • @RanjitAlexander 视图是否向下移动?您是否还在状态栏后面添加了第二个视图?我将在答案中添加必要的代码。
  • @RanjitAlexander 你也放了 x 但确保它是 y。我错过了在描述中输入它。对不起。
【解决方案3】:

将此代码放入您的 ViewController:

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 2013-11-26
    相关资源
    最近更新 更多