最近遇到一个很奇葩的bug,collection头部没有被释放,但是在12.0以下的机型会消失,在xr 手机 14.0以上的系统有时候回偶现出不来
![](https://img.haomeiwen.com/i2815973/e32ea9f380ca8a53.png)
最后查明原因,是因为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都记录一下,方便以后查阅
网友评论