1

我正在尝试使用水平滚动将 UICollectionView 上的所有单元格显示在单行上。

为此,我使用了内置的 UICollectionView 类,但我使用以下代码创建了 UICollectionViewFlowLayout 的子类:

@implementation MemberCollectionViewFlowLayout

- (id)init {
    if ((self = [super init])) {
        self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
        self.minimumLineSpacing = 10000.0f;
    }
    return self;
}

- (CGSize)collectionViewContentSize
{

    NSArray *memberArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"currentGroupMembers"];
    return CGSizeMake([memberArray count]*50 , self.collectionView.frame.size.height);
}

@end

结果,我得到了一个可滚动的行,但如果该行大于屏幕,则不显示。如果我增加 contensize 的高度,我可以看到剩余的单元格被添加到第二行。

如何确保我的所有单元格都在一条线上?

非常感谢您的帮助

4

1 回答 1

0

在流布局文档中它说:

对于水平滚动网格,此值表示连续列之间的最小间距。

因此,如果您要水平添加一个巨大的值并将水平尺寸放大 - 远大于您设置的内容大小。因此,流布局将尝试从下一行开始。

也许根本不需要子类化。您可以设置流布局的属性而无需子类化,并让集合视图处理内容大小。有了视图和滚动方向的约束,应该会有想要的效果。

于 2013-08-12T17:56:31.557 回答