在UICollectionViewFlowLayout上设置EstimatedItemSize是否会破坏UICollectionViewDataSourcePrefetching?

时间:2019-01-15 02:52:30

标签: ios swift uicollectionview uikit uicollectionviewflowlayout

我正在创建具有动态高度单元格的UICollectionView,并在estimatedItemSizeApple Docs Reference)上使用UICollectionViewFlowLayout属性。

尽管,我注意到,一旦设置了estimatedItemSize属性,我的prefetchItemsAt委托的UICollectionViewDataSourcePrefetching方法就不会被调用。

func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath])

如果我没有设置estimateItemSize,则预取会重新开始。这是已知的行为还是我在这里做错了什么?请帮忙。

示例代码:

class CollectionViewController: UICollectionViewController {

var layout: UICollectionViewFlowLayout = {
    let layout = UICollectionViewFlowLayout()
    let width = UIScreen.main.bounds.size.width
    layout.estimatedItemSize = CGSize(width: width, height: 100)
    return layout
}()

override func viewDidLoad() {
    super.viewDidLoad()
    if #available(iOS 10.0, *) {
        collectionView?.prefetchDataSource = self
    }

    collectionView.collectionViewLayout = layout

    // Register cell classes
    self.collectionView.register(UINib.init(nibName: "CollectionViewCell", bundle: nil), forCellWithReuseIdentifier: reuseIdentifier)
}
}

extension CollectionViewController: UICollectionViewDataSourcePrefetching {

// MARK: UICollectionViewDataSourcePrefetching
func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath]) {


    // Fetch more cells
    print("prefetchItemsAt called.")
}
}

0 个答案:

没有答案
相关问题