微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS14中UICollectionview中的潜在错误

如何解决iOS14中UICollectionview中的潜在错误

我在iOS14处理CollectionView的方式中遇到了奇怪的行为。我注意到(从iOS13.5更改为iOS14)UICollectionViewCells的显示顺序是错误的。下面的图片是完全相同的代码(在xCode12中)的屏幕截图,唯一的区别是正确的是使用iOS13.5的版本,而模拟器是使用iPhone1在iOS13.5上的模拟器,而错误的是适用于iOS14的版本以及来自iOS14上带有iPhone 11的模拟器。其他所有内容代码,设置等)完全相同:

图1,集合应如何显示(在iOS13.5中正确):

enter image description here

如果相同的代码是使用iOS14构建的,并在与iOS14相同的iPhone模拟器上运行,则结果如下(不是顺序错误:相反):

在数据源(带有标签的数组)中,所有数据都是正确的,并且cellForItemAt委托可以正常工作。

iOS14中肯定有一些不同的处理方式。最后一个示例是另一个屏幕截图,其中框的大小不同(取决于标签的长度):

正确的(适用于iOS13.5的版本)是:

enter image description here

在构建iOS14时会产生以下结果:

enter image description here

同样,代码是完全一样的,我只是为不同的iOS版本构建项目。在我看来,iOS14修改集合的方式中可能存在一个错误。任何帮助或想法都将受到欢迎。

解决方法

我已经找到了解决方法,我认为它指出了iOS14中UICollectionView委托管理的方式发生了一些变化。

解决方案很简单:我刚刚添加了

cell.setNeedsDisplay()

func collectionView(_ collectionView: UICollectionView,cellForItemAt indexPath: IndexPath)

返回单元格之前。

代码没有其他更改。我注意到在iOS14中,单元格的draw()并未像iOS13.5中那样被调用。因此,添加setNeedsDisplay()会强制重新绘制单元格,这在iOS13.5中是在没有新代码行的情况下发生的。

我想知道是否有人知道任何更改。谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。