具有可读内容宽度的UICollectionViewController流布局

Bra*_*ott 11 ios uicollectionview

我有一个正在UICollectionView使用的流程布局,并且正在尝试实现UITableViewController与具有可读内容宽度的相同的边距。

我最想匹配此布局行为的是将嵌入UICollectionViewControllerUIViewController并具有嵌入的视图“跟随可读宽度”。

嵌入在UIViewController中的UICollectionViewController

在这里,蓝绿色是,蓝绿色UIViewControllerUICollectionViewController。问题在于,蓝绿色区域不会滚动,UICollectionView并且滚动指示器也未如您所愿地沿屏幕边缘。

我的问题是:

如何在不嵌入的情况下实现此布局UICollectionViewController

我的猜测是,我可以通过某种方式设置UICollectionView左右部分插图以匹配可读的内容指南页边距,并通过覆盖viewWillTransition(to size: with coordinator:)和观察UIContentSizeCategoryDidChange通知来更新它们,但是我不确定该怎么做。

Ben*_*ard 0

您的预感是正确的,最简单的方法是通过集合视图的insetForSection. 根据我的经验,需要满足以下条件:

  • 返回集合视图directionalLayoutMargins作为插图(使用.leading和 .trailing
  • 禁用自动安全区域处理collectionView.insetsLayoutMarginsFromSafeArea = false
  • directionalLayoutMargins使用手动设置集合视图view.readableContentGuide.layoutFrame.origin.x。请注意,我使用的是.readContentGuide视图,而不是collectionView.
  • directionalLayoutMargins每当以完全相同的方式更新viewLayoutMarginsDidChange

仍然很高兴知道如何在没有任何类型的容器的情况下完成此任务