在 iOS 8 上横屏时显示状态栏

6

目前正在使用XCode6。由于此版本的XCode仅支持iOS 7.0.3及以上版本的iPhone4及以上版本。

我将此应用程序专门设计为在storyboard中所有视图都使用横向方向。测试使用7.0.3版本的应用程序时,状态栏仍可见。但是,在8.0版中情况并非如此,状态栏被隐藏了。

我的问题是:如何在支持7.0.3及以上版本的横向应用程序上显示状态栏。谢谢。


1
发生这种情况的原因是UIViewController在其特征集合的水平大小类别为紧凑时,实现了prefersStatusBarHidden并返回了YES。这一点没有记录在文档中。 - Douglas Hill
4个回答

14

要在iOS 8的横屏模式下显示状态栏,请尝试以下方法:

- (BOOL)prefersStatusBarHidden {
    return NO;
}

另外,您可以尝试的是当应用程序进入横屏模式时,写下以下行。

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

如果我错了,请纠正我。我需要在每个UIViewController子类中添加代码吗? - David B
我会说“是的”,但请尝试一次,让我知道它是否有效... - Fahim Parkar
我只在我的自定义视图控制器的初始视图上放置了第一个代码块。不知道该把第二个代码块放在哪里。根据第一个代码块的结果,状态栏没有显示出来。我正在使用iPhone6 Plus模拟器,同样适用于使用iOS版本8的iPhone 6及以下设备。 - David B
我刚才在我的上一个评论中尝试了一下,结果状态栏仍然是隐藏的。 - David B
我不会尝试混合使用那两种方法。 - Peter Johnson

9
  1. 更改xcode中所支持的方向,使其仅支持横向模式。
  2. 进入info.plist并添加一个条目,并设置“View controller-based status bar appearance” = NO
  3. 转到您的AppDelegate.m并添加[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

它会在iPhone6上显示吗?如果是的话,如果使用XCode4创建项目,它会是相同的吗? - David B
当我创建一个新项目时,它可以工作。不幸的是,我已经有一个早在XCode4时期创建的现有项目。为了更新到支持iOS7的XCode5,必要的更改已经完成,现在正在进行XCode6的更新(支持iOS8和iPhone6)。 - David B
更新后,请确保使用iOS 8.0 SDK为iPhone6/plus模拟器构建项目。另外,当您更新Xcode时,请将以前的SDK(iPhoneOS、iPhoneSimulator SDks)添加到Xcode SDks,或者更好地为这些SDKs创建符号链接。 - hariszaman
我知道基础知识,但我的问题是如何在iPhone6上显示状态栏。在相关的线程上有人回答之前,我只能坚持我的答案这里。谢谢。 - David B

2

我不确定这是否是正确的答案。但这个答案可以用,但在iPhone6/iPhone6Plus上会出现故障,它在应用启动时不会显示。

[application setStatusBarHidden: NO];

非常感谢。您的解决方案帮助我解决了不同但相似的问题! - Stanislav Pankevich

0
据我所知,除非苹果引入了我还没有发现的新API...设备的垂直大小类别为紧凑时,状态栏始终隐藏。
我还没有找到解决办法,但我认为没有办法规避它...所有系统应用程序都会做同样的事情。
尽管如此,如果您使用iOS 7.1 SDK编译您的应用程序,仍然可以在横向模式下保留状态栏,但是如果您想采用新的API等,这并不是很有用。

编辑:

也许我错了,原生Twitter应用程序在横向模式下查看网页时保留状态栏...不过我不确定它是如何做到的...

我明白了。苹果公司对这种行为有官方声明吗? - David B
1
我知道在 WWDC 会议上讨论了所有的尺寸类别/特征集合相关内容,如果这有帮助的话? - liamnichols
苹果在2014年WWDC会议的“使用UIKit构建自适应应用程序”(Session 216)中确实有一份“官方”声明:“好了,现在当我将此应用程序旋转到横向时,请注意我们的栏变得紧凑,状态栏完全消失。” - Mustafa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接