在 UICollectionViewController 中指定具体的单元格大小?

Specify concrete cell sizes in UICollectionViewController?

我有一个带有 UICollectionViewController 单元格原型的故事板。未直接指定单元格大小,它会导致随机 UI 错误,例如拉伸单元格动画。我想直接设置大小,但我没有在 xcode 10(和最新的 swift)中找到如何做到这一点。如何解决这个问题?

注意:我知道 UICollectionViewDelegateFlowLayout 存在,但我不知道如何将它应用到 UICollectionViewController

发现有 2 种布局可用 - "flow" 和 "custom"(这些名称显示在界面构建器中)。

简而言之,如果您打算使用 UICollectionViewDelegateFlowLayout 及其简单方法 "size for item",那么您应该选择 "flow"

如果你使用UICollectionViewFlowLayout:

  1. 让你的UICollectionViewControllerUIViewController包含UICollectionView实例采用UICollectionViewDelegateFlowLayout

    class MyAwesomeCollectionViewControler: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout 
    

    { ... }

  2. 执行下面的方法:

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: 100, height: 100) // Return desired size here}