TableView ヘッダーのドッキング動作をカスタマイズする方法、またはこれを行うフレームワークを知っている人はいますか?
具体的には、iPod アプリを開くと、アーティストのリストの上部にレターヘッダーがドッキングされていることに気付くでしょう。次に、さらに下にスクロールすると、次のヘッダーが最初のヘッダーを「押し上げ」ます。
この小さなメカニズムは非常に創造的に使用できます。たとえば、コンテンツでいっぱいのテーブルビューがあるとします。コンテンツには 2 つの「モード」があるため、セル内のコンテンツの動作を切り替える、テーブルビューの上部にあるセグメント化されたコントロールが必要です。次に、ロゴなど、画面の上部に装飾的なものも必要です。
これに対する興味深いアプローチの 1 つは、ロゴをヘッダーにし、セグメント化されたコントロールを別のヘッダーにすることです。logoHeader はセクション 0 のヘッダーになり、segmentedHeader はセクション 1 のヘッダーになります。セクション 0 にはセルがありません (または、UITableView がこれで鳴る場合は、0px または 1px の行を追加できます)。セクション 1 にはセルが含まれます。すべてのコンテンツ。だから、このようなビット:
ロゴヘッダー
SegControlHeader
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
(SO の書式設定機能により、ASCII アートが意図したとおりに表示されなくなりますが、問題ありません。)
それで、これは何をしますか?それはすべて 1 つのテーブル ビューであるため、画面全体がスクロールに反応します。ただし、logoHeader が画面外に移動する一方で、segControlHeader は上部にドッキングし、残りのコンテンツはその後ろに渡されます。これは興味深いドッキング効果であり、優れたデザインとアートワークを使用すると、きちんとした効果を作成できます。
問題は、デザイナーがそれを次のレベルに引き上げようとしたときに発生します。「これはここにドッキングする必要があり、これはここにドッキングする必要があります。ビューを開くと、テーブルビューの境界を越えて部分的に隠され始めます (検索バーなど)」など。コンテンツ内の追加のヘッダーはそこにあり、ドッキングする必要があります。 、 等々。
とにかく、これらの種類のドッキング効果で入り込むことができる複雑さの範囲があり、ほぼ瞬時にテーブルビューが不十分になります。これを行う良い方法、またはこれと同じ動作を実現できる何らかのフレームワークを知っている人はいますか?
おそらく最も簡単な方法は、スクロール ビューを使用し、contentOffset を読み取り、それに応じてコンテンツ ビュー内で物事を再配置し、スクロール ビュー内の特定の範囲に最小化または最大化することでしょうか?