1

テーブルの上部に大きなビューが必要です。これは、検索バーのような検索パラメーターを提供しますが、より多くのオプションを備えているため、より多くのスペースを必要とします. (100 ピクセルとしましょう。)

スクロールしても消えるのではなく、シンプルにしたいのです。(44 ピクセルとしましょう。) 編集可能なフィールドの代わりに、検索の概要になります。その概要をタップすると、スクロールして一番上に戻り、検索ビューが再びフル サイズに拡大されます。

どうすればいいですか?

4

1 に答える 1

1

最初のステップは、ヘッダーを の一部にするのUITableViewではなく、同じレベルに追加することです。

[self.view addSubview:self.tableView];
[self.view addSubview:self.myHeaderView];

tableView.tableHeaderViewテーブルを正常に動作させるには、必要なビューと同じサイズのテーブル ( ) に空のヘッダーを配置するだけです。

UIView *emptyHeader = [[UIView alloc] initWithFrame:self.myHeaderView.bounds];
self.tableView.tableHeaderView = emptyHeader;

また、カスタム ヘッダーの動作は動的であるため、UIViewサブクラスを作成してヘッダーを管理する必要があります。

UITableViewDelegate実装しscrollViewDidScroll、呼び出されるたびに contentOffset を確認してください。

展開されたビューの高さが 100 で、縮小されたときは 44 だとします。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.contentOffset.y > (100 - 44)) {
        // Contract your header
        myHeaderView.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);
        [myHeaderView contract]; // Make it display whatever data you want and setup the touch gesture
    }
    else {
        int offset = scrollView.contentOffset.y;
        // The reason for the -offset is that you need it to align to the table's real header position, which will be a little off screen
        myHeaderView.frame = CGRectMake(0, -offset, self.view.frame.size.width, 100);
        [myHeaderView expand];
    }
}

お役に立てれば :)

于 2013-10-29T17:33:56.180 に答える