我有一个问题UICollectionView
。问题是,在我使我的单元格高度动态化后(静态高度没有出现问题),一段时间后,当数据更改时(我正在添加或替换单元格并调用[self.collectionView reloadData];
),并且单元格停止显示/ 消失(开始时单元格始终正确显示)。对于相同的内容,这种情况随机发生,有时更早,有时更晚。卷轴存在,整个事物的高度似乎反映了单元格的高度,也sizeForItemAtIndexPath
被调用,并且正在返回正确的值(所以是numberOfItemsInSection
和numberOfSectionsInCollectionView
),但是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;
}
在我的布局中,但这无济于事之前提到过 - 对于相同的单元格,这可能会发生或不会发生 - 这只是随机的。将不胜感激这方面的帮助。谢谢