我有一个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();
首先我重新加载数据,然后设置高度限制,最后我应用新的布局。
这似乎最初起作用 - 但我认识到其他细胞也受到影响 - 可能是因为我将可重复使用的细胞出列。 但是,如何更改我的代码,以便它可以工作?
答案 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)
}