以编程方式调整 safeArea 的 collectionView

programmatically adjust collectionView for safeArea

我正在尝试设置一个水平滚动的集合视图,其中包含大小为 CGSize(宽度:view.frame.width,高度:view.frame.height)的单元格。但是,我的单元格在顶部被导航栏部分覆盖,使用边缘插入并不能完全适应所有设备。我如何将我的单元格顶部设置在新 iPhone X 导航栏的底部?

问题来了。 collectionView设置在默认navigationBar下

if #available(iOS 11.0, *) {
    collectionView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
} else {
    collectionView.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor).isActive = true
}

您可能还应该考虑底部安全区域,特别是 iPhone X(view.safeAreaLayoutGuide.bottomAnchorbottomLayoutGuide.topAnchor)。

我认为标记的答案不是处理 iOS 上安全区域的正确方法。

对于 ScrollViews、TableViews 和 CollectionViews,处理它们的标准方法是将边缘固定到 ViewController 的视图,然后设置内容插入调整:

collectionView.contentInsetAdjustmentBehavior = .always

这意味着内容将在屏幕底部很好地滚动。