UICollectionReusableView 使用

最近遇到一个很奇葩的bug,collection头部没有被释放,但是在12.0以下的机型会消失,在xr 手机 14.0以上的系统有时候回偶现出不来


问题截图

最后查明原因,是因为UICollectionReusableView 的代理问题

- (CGSize)collectionView:(UICollectionView*)collectionViewlayout:(UICollectionViewLayout*)collectionViewLayoutreferenceSizeForHeaderInSection:(NSInteger)section

这个方法的 size 中的高度,必须大于0才会调用

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath

最终解决办法是在 init 里面给 height 设置高度为0.01 触发代理 然后在动态计算好的高度赋值给height 然后 reload

这里需要注意是 判断高度变化,如果变化才刷新,否则会导致死循环 

遇到的奇葩bug都记录一下,方便以后查阅

你可能感兴趣的:(UICollectionReusableView 使用)