我在导航栏中使用自动布局时遇到了严重的问题。我的目标是将视图定位在导航栏和工具栏的后面。基本上,我不想约束子视图到导航栏或工具栏。这样,如果我让它们消失,我的视图将保持在原来的位置。
然而,无论我做什么,似乎都失败了。
下面是我的代码,在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对应于导航栏的底部(与视图的框架相同)。