繁体   English   中英

UICollectionViewCell宽度大于UICollectionView错误处理

[英]UICollectionViewCell width greater than UICollectionView error handling

我目前正在使用UICollectionViewUICollectionViewFlowLayout以及以下UICollectionViewCell

在此处输入图片说明

但是,最近引发了一个错误,该错误锁定了UI,并且在检查控制台时,不断向控制台吐出以下内容。

在UICollectionViewFlowLayoutBreakForInvalidSizes处创建一个符号断点,以在调试器中捕获此断点。未定义UICollectionViewFlowLayout的行为,因为:项目宽度必须小于UICollectionView的宽度减去部分插入左右值,减去内容插入左和右正确的价值观。

现在错误非常简单明了,单元格的长度大于集合视图的长度。 其原因是,在异常情况下,存在一个非常长的片段数据,导致单元格超出了收集视图的范围。

在单元格本身上,我的行大小为1,并且尾巴被截断了。 我假设自动布局将以这种方式处理该问题,即如果单元格大于集合视图的宽度,它将仅使用单元格上集合视图的宽度,然后截断标签中的文本。 但是,自动布局不会执行此操作,并且在控制台中反复产生上述错误。

所以现在的问题是,处理这种极端情况的最佳/正确方法是什么?

  1. 有什么我错过的小东西吗?
  2. 在这种情况下,我将不得不“调整”流布局,因此建议对流布局进行子类化,重写layoutAttributesForElementsInRect:然后每当它大于UICollectionView的边界时,就调整该单元格的大小。 这条路线似乎过度杀虫?

向您的自定义UICollectionViewCell添加小于或等于的宽度约束。

创建该约束的出口,并将其设置在collectionView(_:cellForItemAt:)

您可以只使用以下UICollectionViewDelegateFlowLayout方法来指定给定indexPath处项目的大小。

func collectionView(_ collectionView: UICollectionView, 
                  layout collectionViewLayout: UICollectionViewLayout, 
           sizeForItemAt indexPath: IndexPath) -> CGSize

有关更多详细信息,请参阅Apple文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM