如何在uitableviewcell中设置uicollectionview的高度?

时间:2018-01-17 10:25:25

标签: ios swift uitableview uicollectionview nslayoutconstraint

我有一个viewcontroller,可以在uitableviewcells中管理带有uicollectionviews的uitableview。

但是,uicollectionviews可能包含不同数量的项目。 因此我需要调整uicollectionviews的高度。

但是当我尝试这样做时,其他uicollectionviews的高度也会改变。

uicollectionview受IBOutlet约束,以及集合视图高度的约束。

我设置了集合视图的高度 tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)

cell.collectionView.reloadData();
cell.collectionViewHeight.constant = cell.collectionView.collectionViewLayout.collectionViewContentSize.height;
cell.collectionView.setNeedsLayout();
cell.collectionView.layoutIfNeeded(); 

首先我重新加载数据,然后设置高度限制,最后我应用新的布局。

这似乎最初起作用 - 但我认识到其他细胞也受到影响 - 可能是因为我将可重复使用的细胞出列。 但是,如何更改我的代码,以便它可以工作?

1 个答案:

答案 0 :(得分:1)

你应该实现'tableView:heightForRowAtIndexPath:'

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

    return 50.0
    // Or customize the way you want using the indexPath
}

或UICollectionView'collectionView:sizeForItemAtIndexPath:'

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

        return CGSize(width: widthPerItem, height: heightPerItem)
    }