検索バーなどの非表示のヘッダー ビューをテーブル ビューに追加すると、スクロールのオフセットを検索バーの中央に設定すると、コンテンツの上部またはテーブル セルの上部に自動的にスクロールします。(私は以下のコードを使用しました)
// in viewDidLoad section
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]
[self.tableView setTableHeaderView:searchBar]
// in viewWillAppear: section
[self.tableView setContentOffset:CGPointMake(0, 44)];
たとえば、検索バーが非表示のときに少し上にスクロールすると、自動的にスクロールして検索バー全体が表示されます。また、検索バーが表示されているときに少し下にスクロールすると、自動的にスクロールして検索バーが非表示になります。
以下のコードを使用して、この機能をコレクション ビューのヘッダーに実装しましたが、それはテーブル ビューの機能とまったく同じではありませんでした。
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
CGFloat offset = scrollView.contentOffset.y;
if (offset > 22 && offset < 44) {
[scrollView setContentOffset:CGPointMake(0, 44) animated:YES];
} else if (offset > 44) {
return;
} else {
[scrollView setContentOffset:CGPointMake(0, 0) animated:YES];
}
}
検索バー全体を表示するか、検索バーを非表示にするかの判断は非常に微妙であるため、上記の機能を正確に模倣することは非常に難しいと思います。
だから私の質問は、「iOS SDK または UICollectionViewController に事前実装されたメソッドはありますか?」です。
何時間もグーグル検索しましたが、答えが見つかりませんでした。