gpt4 book ai didi

swift - tableview 中的 Collectionview 导致 2 列出现问题

转载 作者:行者123 更新时间:2023-11-28 13:29:38 24 4
gpt4 key购买 nike

我在表格 View 单元格中有垂直 Collection View 。 Collection View 也包含加载更多的功能。为了自动调整 Collection View 的大小,我将 tableview 单元格设置为 automaticDimension。我还为 Collection View 提供了高度常数。第一次正确加载但是一旦我转到最后一个单元格并且它在重新加载后加载更多它会在 Collection View 后创建大量空间。任何人都可以让我知道我在这里做错了什么。或者有没有其他方法可以让 collection-view inside tableview 自动调整大小,这样它也可以增加 tableview 单元格的高度

**

  • TableviewCell 类

**

justForYouCollectionView.dataSource = self
justForYouCollectionView.delegate = self
justForYouCollectionView.isScrollEnabled = false
self.collectionHeight.constant = self.justForYouCollectionView.collectionViewLayout.collectionViewContentSize.height
justForYouCollectionView.reloadData()

override func systemLayoutSizeFitting(_ targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority, verticalFittingPriority: UILayoutPriority) -> CGSize {
self.layoutIfNeeded()
let contentSize = self.justForYouCollectionView.collectionViewLayout.collectionViewContentSize
return CGSize(width: contentSize.width, height: contentSize.height + 20)
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if indexPath.row == self.justForYouArray.count - 1 && self.isLoadMore {
updateNextSet()
}
}

**

  • CollectionViewCell 类

**

override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {
let autoLayoutAttributes = super.preferredLayoutAttributesFitting(layoutAttributes)

// Specify you want _full width_
let targetSize = CGSize(width: layoutAttributes.frame.width, height: 0)

// Calculate the size (height) using Auto Layout
let autoLayoutSize = contentView.systemLayoutSizeFitting(targetSize, withHorizontalFittingPriority: UILayoutPriority.required, verticalFittingPriority: UILayoutPriority.defaultLow)
let autoLayoutFrame = CGRect(origin: autoLayoutAttributes.frame.origin, size: autoLayoutSize)

// Assign the new size to the layout attributes
autoLayoutAttributes.frame = autoLayoutFrame
return autoLayoutAttributes
}

在图像中可以看到额外的空间

enter image description here

最佳答案

我之前所做的就是,在 Storyboard 中设置 tableview 高度约束集,然后将其导出放入 viewController 中,然后在填充数据后获取数组计数并除以 2,除以之后我将其乘以 CollectionViewCell 高度并设置它高度到 UITableView 高度约束是这样的。

let count = (array.count / 2) * cellHeight
tableviewHeightConstraint.constant = CGFloat(count)

这将解决您的问题。

关于swift - tableview 中的 Collectionview 导致 2 列出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57602547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com