发布
社区首页 >问答首页 >集合视图布局

集合视图布局
EN

Stack Overflow用户
提问于 2012-10-14 23:27:35
回答 4查看 1.9K关注 0票数 2

可以用集合视图创建一个像报纸一样的3栏版面吗?

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

主要问题是所有单元格都是从左到右填充的:

代码语言:javascript
代码运行次数:0
复制
1 2 3
4 5 6

我需要:

代码语言:javascript
代码运行次数:0
复制
1 5 9
2 6 10
3 7 11
4 8 12
EN

回答 4

Stack Overflow用户

发布于 2012-10-15 01:19:30

是的,我认为集合式视图将满足您的需求。您可能必须使用自定义布局。查看WWDC 2012视频中的“集合视图简介”和“具有集合视图的高级布局”。通过使用自定义布局,您可以按您喜欢的任何方式对单元格进行排序。

票数 3
EN

Stack Overflow用户

发布于 2012-10-15 00:24:13

我建议你重新排序你的数据源。

编辑:

代码语言:javascript
代码运行次数:0
复制
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]];
}

结果:

代码语言:javascript
代码运行次数:0
复制
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, = > 1, 5, 9, 2, 6, 10, 3, 7, 11, 4, 8

格式化打印:

代码语言:javascript
代码运行次数:0
复制
1  2  3
4  5  6
7  8  9
10 11

to

1  5  9
2  6  10
3  7  11
4  8
票数 1
EN

Stack Overflow用户

发布于 2012-10-15 21:21:58

您可以通过将滚动方向更改为水平。这样你就可以按你想要的方式排序了,而且滚动是最有意义的。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12883628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档