根据内容更新 UICollectionView 高度
Posted
技术标签:
【中文标题】根据内容更新 UICollectionView 高度【英文标题】:Update UICollectionView height based on content 【发布时间】:2019-12-03 11:55:52 【问题描述】:UICollectionView 高度未根据内容正确更新。如何更新高度
我的代码:
collectionViewArray.append(trimmedStrig!)
DispatchQueue.main.async
if self.collectionViewArray.count == 1
self.collectionViewHeight.constant = self.collectionView.contentSize.height + 50
print(self.collectionViewHeight.constant)
else if self.collectionViewArray.count > 1
self.collectionViewHeight.constant = self.collectionView.contentSize.height
print(self.collectionViewHeight.constant)
self.collectionView.reloadData()
//Fix collection view cell height and width
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
return CGSize(width: 100, height: 50)
创建第一个单元格时它不显示该单元格,这就是为什么我添加了 50 并且当单元格再次进入第二行时它没有更新高度,但是当在该时间高度中创建的第二行第二个单元格更新时。为什么我不知道?
【问题讨论】:
尝试设置collectionview高度等于顶视图高度 @Alexandr Kolesnik,我不想固定到顶视图高度,因为它只是我 VC 中的一小部分 但是,根据内容我正在更新我的 VC 高度,我有滚动视图 self.collectionViewHeight.constant = self.collectionViewArray.count * 50 self.view.layoutIfNeeded()。在这种情况下,不要忘记在更新约束后更新布局 不,不更新高度 【参考方案1】:试试这个可能对你有帮助
self.collView.reloadData()
self.collView.performBatchUpdates() (complition) in
self.cnsHeightCollView.constant = self.collView.contentSize.height
【讨论】:
@ios 填写正确请标记为正确答案【参考方案2】:在代码中添加这一行:-
collectionView.translatesAutoresizingMaskIntoConstraints = true
例如
override func viewDidAppear(_ animated: Bool)
super.viewDidAppear(animated)
if self.collectionViewArray.count == 1
self.collectionViewHeight.constant = self.collectionView.contentSize.height + 50
print(self.collectionViewHeight.constant)
else if self.collectionViewArray.count > 1
self.collectionViewHeight.constant = self.collectionView.contentSize.height
print(self.collectionViewHeight.constant)
collectionView.translatesAutoresizingMaskIntoConstraints = true //Here
self.collectionView.reloadData()
【讨论】:
现在试试这个最新的 将您的代码放入 viewDidAppear() 而不是 dispachQueue。 在这里,当我单击 btn 单元格时,单元格将被装箱,这就是我使用队列的原因,我在 Btn 操作中编写您的代码。但是没用以上是关于根据内容更新 UICollectionView 高度的主要内容,如果未能解决你的问题,请参考以下文章
重新加载数据后根据要求更新后未显示 uicollectionview 单元格
如何根据 UITableViewCell 中的内容调整水平 UICollectionView 的高度