【问题标题】:Large UICollectionViewCell's disappearing with custom layout大型 UICollectionViewCell 随自定义布局消失
【发布时间】:2012-12-07 20:27:49
【问题描述】:

我继承了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;

我也有这些帖子:UICollectionView's cell disappearingLarge cells in a UICollectionView getting removed while the cell is still displayed 但是,没有提到解决方案。有人可以帮我吗?会不会是苹果那边的问题?如果是,有什么我可以自己解决的吗?

【问题讨论】:

    标签: iphone ios uicollectionview


    【解决方案1】:

    很抱歉告诉你:我很确定这是 UICollectionView 中的一个真正的错误;几周前我遇到了同样的事情。我编写了一个小程序来演示该错误并向 Apple 提交了 RADAR,但还没有收到关于他们是否或是否计划修复它的回复。我能想到的最好的解决方法(警告:我还没有实现这个解决方法)是注意到布局属性离屏幕边缘很远,故意改变单元格属性的边界,所以它只会稍微偏离屏幕,并可能将该偏移量(您从实际边界修剪掉的量)存储为 layoutAttributes 中的附加自定义字段,以便您的单元格知道正确绘制它的内容。这感觉像是一个严重的黑客攻击,但它应该可以工作。

    【讨论】:

    • 在此期间您有回音吗?
    【解决方案2】:

    当调用-(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect 方法并且矩形只是单元格的一部分时,您确定为该单元格返回正确的属性对象吗?

    【讨论】:

    猜你喜欢
    • 2012-12-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多