【问题标题】:Specify concrete cell sizes in UICollectionViewController?在 UICollectionViewController 中指定具体的单元格大小?
【发布时间】:2018-10-08 10:20:48
【问题描述】:

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

注意:我知道UICollectionViewDelegateFlowLayout 的存在,但我不知道如何将其应用于UICollectionViewController

【问题讨论】:

    标签: uicollectionview uicollectionviewcell uicollectionviewflowlayout uicollectionviewdelegateflowlayout


    【解决方案1】:

    如果你使用UICollectionViewFlowLayout

    1. 使包含UICollectionView 实例的UICollectionViewControllerUIViewController 采用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}
      

    【讨论】:

    • 对不起,但就我而言,我有使用“自定义”布局的代码。那么如何处理呢?或者你不知道如何从“自定义”跳转到“流程”?
    • @Vyachaslav Gerchicov,如果是自定义布局,您必须覆盖 func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes?UICollectionViewLayoutAttributes 对象具有 frame 属性。这是您确定大小的地方。如需进一步阅读,请参阅 uicollectionviewlayoutattributesuicollectionviewlayou 文档。
    【解决方案2】:

    发现有 2 种布局可用 - “流”和“自定义”(这些名称显示在界面构建器中)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-03
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 2017-10-22
      相关资源
      最近更新 更多