我对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;
}
在我的布局中,但没有帮助 我知道这种情况可能发生在身高较高的细胞上,但我不认为这是这种情况,因为最大高度是385,也试过限制它,而且正如我之前提到的 - 对于相同的细胞,这可能发生或不 - 它只是随机的。将会感谢你的帮助。感谢