swift

时间:2017-01-25 16:44:10

标签: ios swift mobile uicollectionview

我是iOS开发的新手,我正在开发一个买/卖应用程序。我正在尝试创建一个集合视图,我不会很难设置集合视图单元格的大小。相反,它取决于发布他们正在销售的东西的用户。我意识到通过硬编码盒子的大小,一切看起来都是“四四方方的”。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:3)

假设您使用的是默认流程布局,则有两个选项:

  1. 如果您:

    ,您可以使用自行调整大小的单元格
    • 定义您的单元格及其子视图之间的明确约束;

    • 不要为图像视图定义固定的宽度/高度约束;

    • 设置estimatedItemSize的{​​{1}}:

      UICollectionViewFlowLayout

    然后,自动布局将调整图像视图的大小以适合图像,然后单元格将自行调整大小以适应图像。因此,例如,对于一些随机图像大小,标准流布局将自动调整单元格大小:

    sample collection view

    现在,这是一个简单的单元格,在图像视图中具有随机大小的纯色图像,并且约束为let layout = collectionView?.collectionViewLayout as! UICollectionViewFlowLayout layout.estimatedItemSize = CGSize(width: 100, height: 100) H:|[imageView]|,但同样的想法也适用于复杂的单元格。您只需要确保单元格的顶部/底部和前导/尾随约束是明确的。

    请注意,如果您依赖于图像视图的隐式大小,那么当然假设图像的大小已经与设备一致。如果没有,您可能希望为图像视图高度/宽度创建约束,包括V:|[imageView]|引用,然后在@IBOutlet方法中为这些约束设置constant。但是,为了有效地管理内存,您通常希望将图像缩小到适当的大小,因此通常不需要这样做。

  2. 或者,您可以指定流程布局的委托(UICollectionViewDelegateFlowLayout),然后实施sizeForItemAt: