コレクションビューのレイアウトのような3列の新聞を作成することは可能ですか?
3つのテーブルビューを使用してみましたが、機能しますが、非常に遅くなります。したがって、コレクションビューがネイティブソリューションである場合は、それらを使用する方がよいと思います。彼らは私の仕事に合っていますか?
主な問題は、すべてのセルが左から右に塗りつぶされていることです。
1 2 3
4 5 6
そして私は必要です:
1 5 9
2 6 10
3 7 11
4 8 12
コレクションビューのレイアウトのような3列の新聞を作成することは可能ですか?
3つのテーブルビューを使用してみましたが、機能しますが、非常に遅くなります。したがって、コレクションビューがネイティブソリューションである場合は、それらを使用する方がよいと思います。彼らは私の仕事に合っていますか?
主な問題は、すべてのセルが左から右に塗りつぶされていることです。
1 2 3
4 5 6
そして私は必要です:
1 5 9
2 6 10
3 7 11
4 8 12
はい、コレクションビューがニーズに合っていると思います。おそらく、カスタム レイアウトを使用する必要があります。WWDC 2012 のビデオで、「コレクション ビューの概要」と「コレクション ビューを使用した高度なレイアウト」を確認してください。カスタム レイアウトを使用すると、好きなようにセルを並べ替えることができます。
データ ソースの順序を変更することをお勧めします。
編集:
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
スクロール方向を水平に変更することで可能です。そうすれば、好きなように並べることができ、スクロールが最も理にかなっています。
垂直スクロールでそれを行いたい場合は、 の独自のサブクラスを作成する必要がありますUICollectionViewFlowLayout
。しかし、ユーザーエクスペリエンスは本当に悪くなります。
わかりました、3 つのテーブル ビュー レイアウトの修正が完了しました。プログラムで作成した XIB からセルをロードする代わりに。これにより、パフォーマンスが大幅に向上しました。答えてくれてありがとう。