UICollectionView的代理方法导致程序在iOS8上崩溃

无敌鲨鱼炮
  • 448

引起崩溃的代理方法是这两个:

// 设置组头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之后的方法。
怎样解决这个问题?哪个大佬可以提供点思路。

回复
阅读 1.6k
1 个回答

你应该把错误提示放出来。有个初步建议:将 CGSizeZero 改为 CGSizeMake(screenWidth,0) 试试。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏