テーブルビューにカスタムヘッダービューを作成しています。カスタムビューにはグラデーションがあります。
表示される唯一のヘッダーである場合にのみ、そのグラデーションを表示したいと思います。
したがって、ユーザーがスクロールしていて、テーブルビューの2つのセクションが表示された場合、テーブルビューの2番目のセクションにグラデーションを付けないでください。
これを行うための最良のアプローチは何ですか?
テーブルビューにカスタムヘッダービューを作成しています。カスタムビューにはグラデーションがあります。
表示される唯一のヘッダーである場合にのみ、そのグラデーションを表示したいと思います。
したがって、ユーザーがスクロールしていて、テーブルビューの2つのセクションが表示された場合、テーブルビューの2番目のセクションにグラデーションを付けないでください。
これを行うための最良のアプローチは何ですか?
ここにいくつかの考えがあります:
おそらくテーブルのデリゲートで、ヘッダービューをキャッシュできます。ヘッダービューが要求されるたびに、ピアをチェックして、それらが画面に表示されているかどうかを確認します(UIViewの.windowプロパティがnil以外であると判断されます)。
- (UIView *)tableView:tableView viewForHeaderInSection:section {
if([_headerViews objectAtIndex:section-1].window || [_headerViews objectAtIndex:section+1].window) {
// there are peers on screen
} else {
// this is the only one onscreen
}
}
これは単なるサンプルコードであり、ビューが適切に初期化されることなどを保証するものではありません。