iOS crash [UICollectionViewData validateLayoutInRect:]

在项目中遇见了一个crash,打全局断点无法定位,报错原因

*** Assertion failure in -[UICollectionViewData validateLayoutInRect:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKitCore/UIKit-3698.103.12/UICollectionViewData.m:447

产生原因:
UITableViewCell中嵌套了一个UICollectionView,作为cell中的一个标签,有的数据有标签有的没有
解决方法:
作为标签的UICollectionViewnumberOfSectionsInCollectionView:代理方法中,重置collectionView的布局

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
    
    [collectionView.collectionViewLayout invalidateLayout];
    
    return 1;
}

再在cell中,因为改变了CollectionView的高度布局约束,加上[self.contentView layoutIfNeeded]去更新Cell的布局约束。

猜你喜欢

转载自blog.csdn.net/weixin_33835690/article/details/90806439