4

以下の図に示すように、コレクション ビューのレイアウトを作成したいと考えています。

主に、特定のセクションのすべての項目を同じ行にまとめたいと考えています。ユーザーが縦方向にスクロールすると、セクションがスクロールしてページからはみ出します。ユーザーが水平方向にスクロールすると、アイテムが左右にスクロールされます (左にスクロールすると、セクション ヘッダーの下に「押し込み」、右から画面に新しいアイテムが表示されます)。

ここに画像の説明を入力

Apple が「グリッドのように見える場合は、フロー レイアウトを使用できます」と言っているのは理解していますが、それが単なる包括的な声明なのか、それとも上記が限界を押し上げているのかを理解したいと思います。

上記のレイアウトは FlowLayout を使用して行うことができますか、それともカスタム レイアウトを最初から作成したほうがよいでしょうか?

あなたがレイアウトの第一人者で、これが「子供の遊び」である場合は、どのように進めるかの例を見てみたい.

ありがとう!

4

5 に答える 5

4

UICollectionViewFlowLayout を継承するレイアウト クラスを使用する必要があります。これにより、以下のメソッドを使用してレイアウトの動作をカスタマイズできます。また、Flow Layout のすべてのフックも取得できます。

 - (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect; // return an array layout attributes instances for all the views in the given rect

 - (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath;
  - (void)prepareLayout;
于 2013-03-01T05:11:25.717 に答える
3

わざわざカスタム UICollectionViewLayout サブクラスを作成するのではなく、ヘッダー用のビューを 1 つ含む各行のセルと、水平方向にスクロールするコレクションを含む標準のテーブル ビューを使用して、探している動作を実現できます。行アイテムのビュー。

ここからダウンロードできる小さな例をまとめました。

テーブル ビューを垂直方向にスクロールするときにコレクション ビューのスクロール位置を維持するには、少し余分な作業が必要になるため、それをインスタンス変数に保存し、テーブル セルが要求されたときに復元します。それ以外は、サンプル プロジェクトはかなり簡単だと思います。

于 2013-03-07T09:12:50.310 に答える
0

UICollectionViewFlowLayoutは単一行ベースのレイアウトであるため、ここでサブクラス化することはできません。

于 2013-03-07T05:27:45.513 に答える
0

素晴らしい答えをありがとう。わたしにはできる。テーブルビュー セクションごとに 1 行を指定し、コレクションビューごとにヘッダー セクションを追加することもできます。

于 2013-03-08T18:34:06.607 に答える