gpt4 book ai didi

ios - 在 iOS 12 中,当 UICollectionView 是使用带有约束的自调整大小单元格创建时,重新加载布局时高度错误,直到我滚动

转载 作者:行者123 更新时间:2023-11-28 07:27:11 25 4
gpt4 key购买 nike

按照说明使用解决方案时,我在 iOS 12 中遇到一个奇怪的问题 here .

第一次加载 Collection View 时效果很好,但是当我尝试使用 collectionView.reloadData() 重新加载 Collection View 时或 collectionView.collectionViewLayout.invalidateLayout() , 添加了一个奇怪的单元格高度。

一旦我开始滚动,一切都会恢复正常。请看下面的图片。第一张图片显示了 View 加载后单元格的工作高度。第二个显示按下重新加载后的单元格。

Works great at first load

After clicking on reload bar button

刷新栏按钮调用以下方法。

@objc func reloadCollectionView() {
collectionView.collectionViewLayout.invalidateLayout()
}

请查看 GitHub 中的示例项目 here重现问题。我使用 Xcode 10.1 和 10.2 重现了这个问题。

如能提供解决问题的任何帮助或指导,我们将不胜感激!

提前致谢。

最佳答案

我认为问题出在您的电话:

flowLayout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize

在你的项目中。

如果您将其重置为类似的内容:

layoutFlow.estimatedItemSize = CGSize(width: UIScreen.main.bounds.size.width, height: 100)

然后它会立即运行得更流畅。

注意:值得注意的是,您为单元格设置的估计高度很重要。如果将其设置为 0,则 reloadData() 会将 collectionView 滚动到顶部。设置一个准确的值似乎在测试中效果最好

还有一些错误似乎可以通过删除

来修复
collectionView.collectionViewLayout.invalidateLayout()

然后把它换成类似的东西

collectionView.reloadData()
collectionView.reloadItems(at: collectionView.indexPathsForVisibleItems)

我不知道您想要这个的具体用途,所以我无法完全测试它应该如何,但 invalidateLayout 似乎是重新加载 collectionView 的错误方法。

关于ios - 在 iOS 12 中,当 UICollectionView 是使用带有约束的自调整大小单元格创建时,重新加载布局时高度错误,直到我滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56229231/

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