gpt4 book ai didi

ios - 高度等于 Swift 中 CustomCell 的最大高度的 CollectionView

转载 作者:行者123 更新时间:2023-11-28 23:31:20 26 4
gpt4 key购买 nike

我正在尝试具有一定高度的 Collection View (水平/垂直)。在其中,我有带有许多 subview 的自定义单元格(例如:图像、标题、描述、上次更新等)。

现在我希望所有单元格保持相同的高度,这是所有单元格的最大高度(基于数据)。 (每个单元格高度 = 最大高度的单元格)

我能够创建动态高度单元,但无法理解在哪里放置最大高度逻辑。

目前我有以下代码

View Controller

lazy var flowLayout: UICollectionViewFlowLayout = {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal // .vertical
layout.minimumInteritemSpacing = 10

return layout
}()

lazy var collectionView: UICollectionView = {
let cv = UICollectionView(frame: .zero, collectionViewLayout: flowLayout)
cv.backgroundColor = .white

return cv
}()

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

let targetWidth = collectionView.bounds
.inset(collectionView.contentInset)
.inset(flowLayout.sectionInset)
.width

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellId", for: indexPath) as! SampleCell
cell.configure(data: randomTexts[indexPath.row])

let size = cell.systemLayoutSizeFitting(
.init(width: targetWidth, height: 0),
withHorizontalFittingPriority: .required, verticalFittingPriority: .fittingSizeLevel)

return size
}

SampleCell:UICollectionViewCell

override func systemLayoutSizeFitting( _ targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority,
verticalFittingPriority: UILayoutPriority) -> CGSize {

let contentSize = contentView.systemLayoutSizeFitting(
targetSize,
withHorizontalFittingPriority: horizontalFittingPriority,
verticalFittingPriority: verticalFittingPriority)

return contentSize.withWidth(targetSize.width)
}

扩展

extension CGRect {
func inset(_ insets: UIEdgeInsets) -> CGRect {
return self.inset(by: insets)
}}

最大高度逻辑将去往何处:ViewController 或 SampleCell 以及如何实现相同的目标?

注意:还要了解如何在 View Controller 内进行水平/垂直滚动(具有一定高度的集合(并根据单元格内容调整 a/c))

最佳答案

collectionView(_:layout:sizeForItemAt:) 方法中,在此处返回最大高度。

关于ios - 高度等于 Swift 中 CustomCell 的最大高度的 CollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56371260/

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