引起崩溃的代理方法是这两个:
// 设置组头size
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
CGSize headerSize;
switch (section) {
case 0:
{
headerSize = CGSizeMake(screenWidth, _keywordsHeaderHeight);
}
break;
case 1:
{
headerSize = CGSizeMake(screenWidth, _historyHeaderHeight);
}
break;
default:
{
headerSize = CGSizeZero;
}
break;
}
return headerSize;
}
// 设置组尾size
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section {
CGSize footerSize;
switch (section) {
case 0:
{
footerSize = CGSizeMake(screenWidth, 8);
}
break;
case 1:
{
footerSize = CGSizeZero;
}
break;
default:
{
footerSize = CGSizeZero;
}
break;
}
return footerSize;
}
我如果把这两个代理方法注释了,程序就不崩溃。
崩溃只发生在iOS8上,iOS9或11都正常运行。
我看了下这两个代理方法并没有标出是iOS8之后的方法。
怎样解决这个问题?哪个大佬可以提供点思路。
你应该把错误提示放出来。有个初步建议:将 CGSizeZero 改为 CGSizeMake(screenWidth,0) 试试。