自动布局,安全区域和导航栏的问题



我在导航栏中使用自动布局时遇到了严重的问题。我的目标是将视图定位在导航栏和工具栏的后面。基本上,我不想约束子视图到导航栏或工具栏。这样,如果我让它们消失,我的视图将保持在原来的位置。

然而,无论我做什么,似乎都失败了。

下面是我的代码,在viewController的viewDidLoad()中:
view.addSubview(collectionView)
collectionView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
collectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true

我的理解是,这样我可以忽略安全区域。然而,似乎底部锚是正确的,而topAnchor与view.safeAreaLayoutGuide.topAnchor.

视图控制器是导航控制器的根源。

任何想法吗?

所以,经过无数个小时,我想出了这个办法。

如果你使用的是不透明的导航栏,你必须修改ViewController的这个属性:

self.extendedLayoutIncludesOpaqueBars = true

没有它,当导航栏可见时,视图的topAnchor对应于导航栏的底部(与视图的框架相同)。

最新更新