为了账号安全,请及时绑定邮箱和手机立即绑定

iOS 7 - 状态栏与视图重叠

iOS 7 - 状态栏与视图重叠

慕斯709654 2019-08-12 09:53:29
iOS 7 - 状态栏与视图重叠我有一个ViewController在里面UINavigationcontroller,但导航栏是隐藏的。当我在iOS 7上运行应用程序时,状态栏显示在我的视图之上。有办法避免这种情况吗?我不想编写任何特定于操作系统的代码。我试着设置View controller-based status bar appearance到NO,但它并没有解决这个问题。
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

Xcode 5 iOS 6/7 Deltas专门用于解决此问题。在故事板中,我将我的视图向下移动了20个像素,在iOS 7上向右看,为了使其与iOS 6兼容,我更改Delta y为-20。

由于我的故事板没有使用自动布局,为了在iOS 6上正确调整视图的高度,我必须设置Delta heightDelta Y


查看完整回答
反对 回复 2019-08-12
?
浮云间

TA贡献1829条经验 获得超4个赞

如果您根本不想要任何状态栏,则需要使用以下数据更新plist:要在plist中执行此操作,请添加以下两个设置:

<key>UIStatusBarHidden</key><true/><key>UIViewControllerBasedStatusBarAppearance</key><false/>

在iOS 7中,您需要设计一个覆盖透明状态栏的应用程序。例如,请参阅新的iOS 7天气应用程序。


查看完整回答
反对 回复 2019-08-12
?
不负相思意

TA贡献1777条经验 获得超10个赞

这是UIViewControlleriOS 7上的默认行为。视图将全屏显示,这意味着状态栏将覆盖视图的顶部。

如果你有一个UIViewController内部的UINavigationController和的导航栏是可见的,你可以有下面的代码在你的viewDidLoad或有背景图片的导航栏做的伎俩。

self.edgesForExtendedLayout = UIRectEdgeNone;

如果您隐藏了navigationBar,则必须通过移动20个点来调整所有UIView元素。我没有看到任何其他解决方案。使用自动布局会有所帮助。

以下是用于检测iOS版本的示例代码,如果您想要向后兼容。

NSUInteger DeviceSystemMajorVersion() {
    static NSUInteger _deviceSystemMajorVersion = -1;
    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
        NSString *systemVersion = [UIDevice currentDevice].systemVersion;
        _deviceSystemMajorVersion = [[systemVersion componentsSeparatedByString:@"."][0] intValue];
    });

   return _deviceSystemMajorVersion;}


查看完整回答
反对 回复 2019-08-12
  • 3 回答
  • 0 关注
  • 913 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信