在横向上消失的 UICollectionViewCells

Posted

技术标签:

【中文标题】在横向上消失的 UICollectionViewCells【英文标题】:Disappearing UICollectionViewCells on landscape orientation 【发布时间】:2014-03-14 19:03:09 【问题描述】:

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

我什至尝试过我的布局:

- (BOOL) shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds

    return YES;

结果相同。

有人对这个问题有任何想法吗?我附上了一张关于我的布局如何组织和预期行为的图片:

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

- (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 中的 item 数量在横向和纵向似乎完全不同。

【问题讨论】:

【参考方案1】:

终于弄明白了。当我在横向上时,我将矩形增加到大尺寸:

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

【讨论】:

以上是关于在横向上消失的 UICollectionViewCells的主要内容,如果未能解决你的问题,请参考以下文章

如何在横向上调整自定义 UITableView 分隔符并防止消失

当我从纵向模式更改为横向时,按钮背景图像消失

当我使用平板电脑访问网站时导航消失(横向模式)

UIPagviewController 子视图在横向模式下消失

当我从纵向模式更改为横向时,按钮背景图像消失

阻止 UIToolbar 在横向方向消失 - iPad