gpt4 book ai didi

ios - 为什么我不能将 UICollectionViewFlowLayout 中的 referenceSizeForFooterInSection 与 EstimateItemSize 一起使用?

转载 作者:行者123 更新时间:2023-11-30 12:29:05 24 4
gpt4 key购买 nike

我正在尝试制作一个具有自调整大小和无限滚动功能的collectionView,但是当我设置referenceSizeForFooterInSection方法时,我的单元格没有显示。

当我删除estimateItemSize 属性并设置ItemSize 属性时,将显示单元格。

我的代码有什么问题?

我的VC:

override func viewDidLoad() {
super.viewDidLoad()

// Set explorerTableView
setupExplorerCollectionView()

// load presenter viewDidLoad
presenter.viewDidLoad()
}


func setupExplorerCollectionView() {
// Set flow layout
if let flowLayout = explorerCollectionView.collectionViewLayout as? UICollectionViewFlowLayout {
flowLayout.estimatedItemSize = CGSize(width: self.view.frame.width, height: 398)
flowLayout.minimumLineSpacing = 0
flowLayout.scrollDirection = .vertical
}


// Set delegate & dataSource
explorerCollectionView.dataSource = self
explorerCollectionView.delegate = self

// Register cells
explorerCollectionView.register(ExplorerCell.self)
explorerCollectionView.registerView(LoadingCell.self, for: UICollectionElementKindSectionFooter)
}

extension ExplorerViewController: ExplorerView {

func loadExplorerData(_ stories: [Story]) {
self.stories.append(contentsOf: stories)
self.explorerCollectionView.reloadData()
}

func showNoContentView() {
//
}

extension ExplorerViewController: UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return stories.count
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if indexPath.item == stories.count - 1 {
if loadMore == .haveMore {

}
}

let cell = collectionView.dequeueReusableCell(for: indexPath) as ExplorerCell
cell.setup(with: stories[indexPath.item])
return cell
}

func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
var footer: LoadingCell!

if (kind == UICollectionElementKindSectionFooter) && (loadMore != .finished){
footer = collectionView.dequeueReusableView(of: kind, for: indexPath) as LoadingCell
footer.setup()
}

return footer
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize {
return (loadMore == .finished) ? CGSize.zero : CGSize(width: self.view.frame.width, height: 50)
}
}

谢谢。

最佳答案

我最终使用collectionView(_:layout:sizeForItemAt:)来计算每个单元格的内容大小。

关于ios - 为什么我不能将 UICollectionViewFlowLayout 中的 referenceSizeForFooterInSection 与 EstimateItemSize 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43814026/

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