2013-01-25 6 views
9

UITableViewControllerのsetTableHeaderのように、ヘッダをコレクションビューに設定したいとします。ヘッダービュー全体をUICollectionViewに設定するにはどうすればよいですか?

コレクションビューで各セクションのヘッダーを設定する方法が見つかりましたが、ヘッダー全体のヘッダービューを設定する方法が見つかりませんでした。

アップルのUICollectionViewLayoutのリファレンスによると、補足ビューはデータとは異なりセルとは異なりますが、セルと異なり、補足ビューはユーザーが選択できません。補足ビューはオプションであり、その使用と配置はレイアウトオブジェクトによって定義されます。 "、しかし、私はコレクションビュー全体のヘッダービューを実装する方法を知らない。

セクションヘッダービューを最初のセクションだけに長方形にすることでこれを実装しようとしましたが、tableHeaderのそれとは異なりました。

テーブルビューでは、コンテンツのオフセットを下位ヘッダーに設定すると、コンテンツサイズが自動的に拡張され、いくつかの要素が存在してもヘッダーが非表示になります。

しかし、コレクションビューでは、スクロールするのに十分な要素が十分にある場合にコンテンツオフセットを修正するだけで問題はありません。

私はカスタムレイアウトを使用して、これを実装し、すべてのスクロールイベントにヘッダを再配置...

+0

[UITableViewプレーンスタイルのセクションヘッダーのように、UICollectionViewの補助ビュー浮動小数点を作成する方法](http://stackoverflow.com/questions/13511733/how-to-make-supplementary-view-float-in -uicollectionview-as-section-headers-do-i) – staticVoidMan

+0

@staticVoidManこれは複製ではありません。質問をよくお読みください。 – dzensik

答えて

1

をいくつかの要素が存在する場合、私は、動的コンテンツのサイズを拡張しようとしたが、それがうまく動作しないようです。サブクラスUICollectionViewLayoutで起動し、ウェブ上のチュートリアルのトンがありますが、これは良いものです:http://markpospesel.wordpress.com/2012/10/25/fixing-circlelayout/

その後トリックが常にshouldInvalidateLayoutForBoundsChange:YESを返すことで、prepareLayout再配置で(すなわちlayoutAttributes'フレームを変更してください。)ヘッダはコレクションビューxOffsetとyOffsetに基づいています。

NSIndexPath 0-0の補助ビューを使用します。

layoutAttributesForElementsInRect:がすべてのフレームで呼び出されるため、コレクションビューに多数のアイテムがある場合、パフォーマンスに影響を与えないように結果をキャッシュする必要があります。その1つのヘッダーを除いて、すべての属性は変更されていないはずです。

出典:この特定のトピックについては1か月を費やしました。

関連する問題