动态设置UICollectionViewCell的大小

时间:2017-06-13 09:07:53

标签: ios swift uicollectionview uicollectionviewcell uicollectionviewlayout

我有一个包含图像视图和标签的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
    }

我有一组显示内容的文字和图片。

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

3 个答案:

答案 0 :(得分: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)
    }

答案 1 :(得分:0)

标签宽度=图像视图的宽度。 没关系。 对于高度,您可以使用“内在内容大小”功能来获取标签的大小。

答案 2 :(得分:0)

此处collectioncell是收藏视图的出口

 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
    }