首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >iOS 7-状态栏与视图重叠

iOS 7-状态栏与视图重叠
EN

Stack Overflow用户
提问于 2013-09-13 07:29:05
回答 11查看 110.6K关注 0票数 109

我有一个ViewController,它在UINavigationcontroller中,但navigationBar是隐藏的。当我在iOS 7上运行该应用程序时,状态栏显示在我的视图顶部。有没有办法避免这种情况?

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

我尝试将View controller-based status bar appearance设置为NO,但没有解决问题。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2013-09-14 04:55:47

Xcode 5提供了专门为解决此问题而设计的iOS 6/7 Deltas。在故事板中,我将视图向下移动了20像素,以便在iOS7上看起来更右。为了使其与iOS6兼容,我将Delta y更改为-20。

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

票数 95
EN

Stack Overflow用户

发布于 2013-09-15 19:08:49

如果你根本不想要任何状态栏,你需要用这个数据更新你的plist :为此,在plist中,添加这两个设置:

代码语言:javascript
复制
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

在iOS 7中,你需要在设计你的应用时考虑到一个覆盖的透明状态栏。例如,请参阅新的iOS 7天气应用。

票数 69
EN

Stack Overflow用户

发布于 2013-09-13 08:09:28

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

如果您在UINavigationController中有一个UIViewController,并且该navigationBar是可见的,那么您可以在您的viewDidLoad中包含以下代码,或者使用navigationBar的背景图像来实现此目的。

代码语言:javascript
复制
self.edgesForExtendedLayout = UIRectEdgeNone;

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

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

代码语言:javascript
复制
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;
}
票数 43
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18775874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档