动态设置 UICollectionViewCell 的大小

Posted

技术标签:

【中文标题】动态设置 UICollectionViewCell 的大小【英文标题】:Set the size of UICollectionViewCell dynamically 【发布时间】:2017-06-13 09:07:53 【问题描述】:

我有一个 UICollectionViewCell,其中包含一个图像视图和一个标签。

只有当我有图像视图时,我才能动态调整单元格的大小。

我在 imageView 下方添加了一个带有自动布局的标签。

在 viewDidLoad 上,图像被截断或文本被截断。如何在 UICollectionViewCell 中动态调整图像视图和标签的大小。

以下是我仅适用于 imageView 的代码

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize 
        let imageSize = model.images[indexPath.row].size
        return imageSize
    

我有一个显示内容的文本和图像数组。

任何帮助将不胜感激。谢谢。

【问题讨论】:

它可以帮助你possiblemobile.com/2016/02/… 【参考方案1】:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize 
        let imageSize = model.images[indexPath.row].size

        //find the height of label on setting text.
        //create a temp label
                let tempLabel = UILabel()
        tempLabel.numberOfLines = 0
        tempLabel.text = "abcd" //set ur cells text here
        let labelSize = tempLabel.intrinsicContentSize

        return CGSize(width: imageSize.width + labelSize.width, height: imageSize.height + labelSize.height)
    

【讨论】:

【参考方案2】:

标签的宽度 = 图像视图的宽度。 没关系。 对于高度,您可以使用 Intrinsic Content Size 函数来获取标签的大小。

【讨论】:

【参考方案3】:

这里的collectioncell是Collection view的出口

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize 

        let cellsize = CGSize(width: (collectioncell.bounds.size.width/2) - 12, height:(collectioncell.bounds.size.height/3) - 20)

        return cellsize
    

【讨论】:

以上是关于动态设置 UICollectionViewCell 的大小的主要内容,如果未能解决你的问题,请参考以下文章

具有动态大小单元格间距问题的 UICollectionViewCell

4.4 和 5.5 英寸的 UICollectionViewCell 动态调整大小

UICollectionViewCell 的动态高度以编程方式与约束?

无法使用 AutoLayout 设置 UICollectionViewCell 的宽度

动态缩小 UICollectionViewCell 的高度

UICollectionViewCell 中的动态高度 noScrollable UICollectionView