在横向上消失UICollectionViewCells

时间:2014-03-14 19:03:09

标签: ios ipad uicollectionview uicollectionviewcell uicollectionviewlayout

使用flowlayout和orientation管理我的UICollectionsView时遇到问题。基本上,当我切换到横向时会出现问题,一些UICollectionViewCells丢失了。一旦我开始滚动,它们就会重新出现。它应该能够显示所有单元格,因为contentSize上有更多的空间。

我甚至尝试过我的布局:

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

结果相同。

有人对这个问题有任何想法吗?我在图片中列出了我的布局如何组织以及预期的行为:

enter image description here

要添加更多细节,每个颜色编码的单元格都属于它自己的部分,我正在使用以下方法更改方向更改时向右移动第二部分:

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {
    NSArray* attributesToReturn = [super layoutAttributesForElementsInRect:rect];

    for (UICollectionViewLayoutAttributes* attributes in attributesToReturn) {
        NSIndexPath* indexPath = attributes.indexPath;
        if (nil == attributes.representedElementKind) {
            attributes.frame = [self layoutAttributesForItemAtIndexPath:indexPath].frame;
        } else {
            NSString *kind = attributes.representedElementKind;
            attributes.frame = [self layoutAttributesForSupplementaryViewOfKind:kind atIndexPath:indexPath].frame;
        }
    }
    return attributesToReturn;
}

似乎layoutAttributesForElementsInRect中的项目数量在横向和纵向上完全不同。

1 个答案:

答案 0 :(得分:0)

最后弄明白了。当它在风景上时,我将矩形增加到一个很大的尺寸:

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {
    CGRect *newRect = CGRectMake(0,0, screensize.width, screensize.height);
    NSArray* attributesToReturn = [super layoutAttributesForElementsInRect:newRect];
    ...
    }