【问题标题】:Collection View layout集合视图布局
【发布时间】:2012-10-14 15:27:34
【问题描述】:

是否可以创建带有收藏视图的 3 栏报纸式布局?

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

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

1 2 3
4 5 6

我需要:

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

【问题讨论】:

    标签: objective-c ios xcode ios6 uicollectionview


    【解决方案1】:

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

    【讨论】:

    • (我正要说同样的话。)您还应该阅读“iOS 的集合视图编程指南”中的Creating Custom Layouts
    • 谢谢,我猜苹果开发者让相对简单的任务有点痛苦。
    【解决方案2】:

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

    编辑:

    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
    

    【讨论】:

    • 这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
    • 嗯,有趣的想法。我会尽力。谢谢!
    【解决方案3】:

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

    如果您想通过垂直滚动来做到这一点,则必须编写自己的 UICollectionViewFlowLayout 子类。但是会让用户体验非常糟糕。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多