5

我有一个问题UICollectionView。问题是,在我使我的单元格高度动态化后(静态高度没有出现问题),一段时间后,当数据更改时(我正在添加或替换单元格并调用[self.collectionView reloadData];),并且单元格停止显示/ 消失(开始时单元格始终正确显示)。对于相同的内容,这种情况随机发生,有时更早,有时更晚。卷轴存在,整个事物的高度似乎反映了单元格的高度,也sizeForItemAtIndexPath被调用,并且正在返回正确的值(所以是numberOfItemsInSectionnumberOfSectionsInCollectionView),但是cellForItemAtIndexPath停止被调用。内容消失后 - 无论我尝试显示什么数据(即使是显示没有问题的初始数据),UICollectionView 都不会显示任何单元格。值得一提的是,我打[self.collectionView reloadData];了很多电话,因为我在延迟加载图像,并在每个图像加载后刷新集合视图。

在我的 UICollectionViewController 我有:

        - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    float height = 0.0f;
    CGSize retval;
    ...
                height = [T20UploadMessageCell getImageHeight:m.upload];
                retval = CGSizeMake(self.view.frame.size.width, height);

    ...
            return retval;
        }

在 T20UploadMessageCell.m

+(float)getImageWidth:(Upload*)upload{
    return 98.0f;
}

+(float)getImageHeight:(Upload*)upload{
    if (upload.isLoaded)
        return 42.0f + upload.height * ([T20UploadMessageCell getImageWidth:upload]/upload.width);
    else return 140.0f;
}

我试过添加

-(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
{
    return YES;
}

在我的布局中,但这无济于事之前提到过 - 对于相同的单元格,这可能会发生或不会发生 - 这只是随机的。将不胜感激这方面的帮助。谢谢

4

0 回答 0