ios – UITabBarController的UIViewControllers与状态栏重叠

>
Xcode 7

> iOS目标9.3

>斯威夫特2

我在Xcode中创建了一个新的Tabbed应用程序:

《ios – UITabBarController的UIViewControllers与状态栏重叠》

我将第一个模板生成的UIViewController超级视图的背景更改为灰色,然后运行应用程序,如此截图所示,第一个UIView与状态栏重叠:

《ios – UITabBarController的UIViewControllers与状态栏重叠》

我已经阅读了很多文章,特别是在iOS 7中为状态栏分配空间.

我还在apple.developer.com上读到以下引用:

“使用不透明的UINavigationController或UITabBarController的应用程序会自动将其内容保留在状态栏下方.”

一般来说,apple.developer.com网站上的这个链接似乎有点过时了.

但是,据说,我期待UITabBarController加载带标签的子视图,并为UITabBarController的Storyboard中显示的状态分配空间:

《ios – UITabBarController的UIViewControllers与状态栏重叠》

我尝试将以下内容添加到我的UITabBarController类中:

override func viewDidLoad() {
    super.viewDidLoad()

    self.edgesForExtendedLayout = UIRectEdge.None
    self.automaticallyAdjustsScrollViewInsets = false;
}

我看了很多Stackoverflow问题和答案线程,我发现这个人在Stackoverflow上问了同样的问题:
Using UITabBarController but status bar covers view

我知道如何在每个UiViewController选项卡的每个父视图的顶部布局指南中添加约束,但我试图避免添加新的顶级UIView,因为我现有的UIViewControllers选项卡在SuperView中都有UILabels,UIButtons,UICollections等我无法在Xcode Storyboard中为SuperView的Top Layout Guide添加约束.

使用SuperView我无法通过控制拖动添加顶级约束似乎:

《ios – UITabBarController的UIViewControllers与状态栏重叠》

最佳答案 iOS在自动布局中为您处理此问题.当视图在状态栏下方延伸时,在“垂直间距到顶部布局指南”约束中将约束固定为0距离,您会发现它位于状态栏下方,如预期的那样.

《ios – UITabBarController的UIViewControllers与状态栏重叠》

《ios – UITabBarController的UIViewControllers与状态栏重叠》

点赞