集合视图布局

时间:2012-10-14 15:27:35

标签: objective-c ios xcode ios6 uicollectionview

是否可以使用集合视图创建3列报纸?

我尝试使用3个表格视图但它有效,但非常滞后。因此,如果集合视图是本机解决方案,我认为最好使用它们。他们适合我的任务吗?

主要问题是所有细胞都是从左到右填充的:

1 2 3
4 5 6

我需要:

1 5 9
2 6 10
3 7 11
4 8 12

4 个答案:

答案 0 :(得分:3)

是的,我认为集合视图可以满足您的需求。您可能必须使用自定义布局。在WWDC 2012视频中查看“集合视图简介”和“带集合视图的高级布局”。通过使用自定义布局,您可以按照自己喜欢的方式订购单元格。

答案 1 :(得分:1)

我建议您重新排序数据源。

修改

NSArray *oldArr = @[@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", @"11"];
NSMutableArray *newArr = [NSMutableArray arrayWithCapacity:oldArr.count];

int row = ceilf(oldArr.count / 3.f);
int remainder = oldArr.count % 3;

for (int i = 0; i < row; i++) {
    [newArr addObject:[oldArr objectAtIndex:i]];

    if (i == (row - 1) && remainder == 1)
        continue;

    [newArr addObject:[oldArr objectAtIndex:i + row]];

    if (i == (row - 1) && remainder == 2)
        continue;

    [newArr addObject:[oldArr objectAtIndex:i + row * 2]];
}

结果:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, = > 1, 5, 9, 2, 6, 10, 3, 7, 11, 4, 8

格式化打印:

1  2  3
4  5  6
7  8  9
10 11

to

1  5  9
2  6  10
3  7  11
4  8

答案 2 :(得分:0)

您可以将滚动方向更改为水平。这样你就可以按照自己的意愿进行排序,滚动最有意义。

如果你想用垂直滚动来做,你必须编写自己的UICollectionViewFlowLayout子类。但是会让用户体验非常糟糕。

答案 3 :(得分:0)

好的,我已经完成了修复我的3表视图布局。而不是从XIB加载单元格我已经以编程方式创建。这给了我巨大的性能提升。谢谢你的答案。