Lin*_*rth 5 uicollectionview swift
UICollectionView我正在尝试为我使用的协议实现数据预取UICollectionViewDataSourcePrefetching;但是,相应的方法没有被调用。
集合视图具有自定义布局。我也尝试过常规的流程布局,结果相同。
重新加载数据后,我执行以下代码以使集合视图具有其内容的大小,以防止在该集合视图内滚动但在集合视图外部的滚动视图中滚动:
func reloadData() {
viewDidLayoutSubviews()
collectionView.reloadData()
collectionView.layoutIfNeeded()
viewDidLayoutSubviews()
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
collectionViewHeightConstraint.constant = collectionView.collectionViewLayout.collectionViewContentSize.height
collectionView.layoutIfNeeded()
view.layoutIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)
也许这有什么关系?
UIViewController 继承自UICollectionViewDataSourcePrefetchingcollectionView.prefetchDataSource = self(也尝试使用故事板)collectionView.isPrefetchingEnabled = true(也尝试使用故事板)collectionView(_:prefetchItemsAt:)该prefetchItemsAt方法未被调用。我通过print在方法中放置一条语句并设置断点来确定这一点。
我执行以下代码以使集合视图具有其内容的大小,以防止在该集合视图内滚动,但在集合视图外部的滚动视图中滚动:
这听起来很破碎。
你为什么做这个?
当用户滚动集合视图时,会触发集合视图上的预取(来自文档)。通过使集合视图框架与内容大小相同,您实际上会禁用集合视图本身的滚动。
当用户滚动时,集合视图调用此方法
如果您强制集合视图框架与内容大小相同,那么您就完全破坏了UICollectionView。
未调用预取的原因是因为每个单元格都已加载。预取中不再有任何内容。因为您的集合视图同时显示每个单元格。
如果您想滚动集合视图...让集合视图处理它。您不需要将集合视图放置在另一个滚动视图中。
| 归档时间: |
|
| 查看次数: |
2072 次 |
| 最近记录: |