大的UICollectionViewCell随着自定义布局而消失

我subclassed UICollectionViewLayout 。 到现在为止还挺好。
但是,我有一些比屏幕更宽的单元格,有时在滚动时会消失。 当你再滚动一下,他们就会神奇地重新出现在他们应该在的地方。 我可以告诉你我的代码,但是我认为没有错,因为它在90%的情况下工作。但是,真正的大单元(超过屏幕尺寸的两倍)有时会消失。

 NSMutableArray* attributes = [NSMutableArray array]; for (int section=0; section < [[self collectionView] numberOfSections]; section++) { [attributes addObject:[self layoutAttributesForSupplementaryViewOfKind:UICollectionElementKindSectionHeader atIndexPath:[NSIndexPath indexPathForItem:0 inSection:section]]]; for (int row=0; row < [[self collectionView] numberOfItemsInSection:section]; row++) { NSIndexPath* indexPath = [NSIndexPath indexPathForItem:row inSection:section]; [attributes addObject:[self layoutAttributesForItemAtIndexPath:indexPath]]; } } return attributes; 

我也有这些post: UICollectionView的单元格消失 , UICollectionView中的 大单元格在单元格仍然显示时被删除但是,没有提到解决scheme。 有人可以帮我吗? 难道问题是苹果方面? 如果是的话,我有什么可以自己解决的吗?

对不起,告诉你:我很确定这是一个真正的错误在UICollectionView; 几周前我遇到了同样的事情。 我已经做了一个小程序来演示这个bug,并且向苹果公司提交了一个RADAR,但是还没有听到他们是否或者是否计划修复它。 我能想到的最好的解决方法(警告:我还没有实现这个解决方法)是注意到布局属性离屏幕边缘很远,故意改变单元格属性的边界,所以它只是稍微熄灭屏幕上,并可能将该偏移量(您裁剪掉的实际边界应该是多less)存储为layoutAttributes中的其他自定义字段,以便您的单元格知道要正确地绘制其内容。 这感觉像一个粗暴的黑客,但它应该工作。

你确定你返回这个单元格的正确的属性对象-(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect被调用,当rect只是你的单元格的一部分?