如何在 uitableviewcell 中设置 uicollectionview 的高度?
Posted
技术标签:
【中文标题】如何在 uitableviewcell 中设置 uicollectionview 的高度?【英文标题】:How to set the height of a uicollectionview inside an uitableviewcell? 【发布时间】:2018-01-17 10:25:25 【问题描述】:我有一个视图控制器,它管理 uitableviewcells 中带有 uicollectionviews 的 uitableview。
但是,uicollectionviews 可能包含不同数量的项目。 因此我需要调整 uicollectionviews 的高度。
但是当我尝试这样做时,其他 uicollectionviews 的高度也会改变。
uicollectionview 受一个 IBOutlet 的约束,以及对 collection view 高度的约束。
我正在设置 collectionview 的高度
tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)
:
cell.collectionView.reloadData();
cell.collectionViewHeight.constant = cell.collectionView.collectionViewLayout.collectionViewContentSize.height;
cell.collectionView.setNeedsLayout();
cell.collectionView.layoutIfNeeded();
首先我重新加载数据,然后设置高度约束,最后应用新布局。
起初这似乎有效 - 但我认识到其他单元格也受到影响 - 可能是因为我正在使可重复使用的单元格出列。 但是我怎样才能改变我的代码,让它工作呢?
【问题讨论】:
试试这个链接:***.com/questions/48093595/… 试试这个解决方案 -> ***.com/questions/46724530/… 需要您的单元格线框布局 我很好奇,您尝试创建什么需要将UICollectionView
嵌入到 UITableViewCell
中?也许有更好的方法来实现你想要的:)
您是否尝试过在UICollectionView
中使用自定义补充视图作为标题?
【参考方案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)
【讨论】:
我需要可变高度的行。而这些高度取决于包含的collectionview的高度。 好的,我明白了。我已经完成了更新单元格中内容的约束,然后使用 'cell.layoutIfNeeded(); ' 在返回单元格之前。以上是关于如何在 uitableviewcell 中设置 uicollectionview 的高度?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UITableViewCell 中设置 UIButton 状态?
如何在swift中设置自定义UITableviewcell的动态高度
如何在 iOS 中使用 CAGradientLayer 在 UITableViewCell 中设置多个渐变颜色?
如何使用 AutoLayout 在一个 UITableView 中设置具有两个原型的 UITableViewCell 的 AutoHeight?