iOS 7 - 状态栏与视图重叠

iOS 7 - 状态栏与视图重叠

我有一个ViewController在里面UINavigationcontroller,但导航栏是隐藏的。当我在iOS 7上运行应用程序时,状态栏显示在我的视图之上。有办法避免这种情况吗?

我不想编写任何特定于操作系统的代码。

我试着设置View controller-based status bar appearanceNO,但它并没有解决这个问题。


慕斯709654
浏览 914回答 3
3回答

繁华开满天机

Xcode 5 iOS 6/7 Deltas专门用于解决此问题。在故事板中,我将我的视图向下移动了20个像素,在iOS 7上向右看,为了使其与iOS 6兼容,我更改Delta y为-20。由于我的故事板没有使用自动布局,为了在iOS 6上正确调整视图的高度,我必须设置Delta height为Delta Y。

浮云间

如果您根本不想要任何状态栏,则需要使用以下数据更新plist:要在plist中执行此操作,请添加以下两个设置:<key>UIStatusBarHidden</key><true/><key>UIViewControllerBasedStatusBarAppearance</key><false/>在iOS 7中,您需要设计一个覆盖透明状态栏的应用程序。例如,请参阅新的iOS 7天气应用程序。

不负相思意

这是UIViewControlleriOS 7上的默认行为。视图将全屏显示,这意味着状态栏将覆盖视图的顶部。如果你有一个UIViewController内部的UINavigationController和的导航栏是可见的,你可以有下面的代码在你的viewDidLoad或有背景图片的导航栏做的伎俩。self.edgesForExtendedLayout&nbsp;=&nbsp;UIRectEdgeNone;如果您隐藏了navigationBar,则必须通过移动20个点来调整所有UIView元素。我没有看到任何其他解决方案。使用自动布局会有所帮助。以下是用于检测iOS版本的示例代码,如果您想要向后兼容。NSUInteger&nbsp;DeviceSystemMajorVersion()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;NSUInteger&nbsp;_deviceSystemMajorVersion&nbsp;=&nbsp;-1; &nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;dispatch_once_t&nbsp;onceToken; &nbsp;&nbsp;&nbsp;&nbsp;dispatch_once(&onceToken,&nbsp;^{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NSString&nbsp;*systemVersion&nbsp;=&nbsp;[UIDevice&nbsp;currentDevice].systemVersion; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_deviceSystemMajorVersion&nbsp;=&nbsp;[[systemVersion&nbsp;componentsSeparatedByString:@"."][0]&nbsp;intValue]; &nbsp;&nbsp;&nbsp;&nbsp;}); &nbsp;&nbsp;&nbsp;return&nbsp;_deviceSystemMajorVersion;}
打开App,查看更多内容
随时随地看视频慕课网APP