日々精進

新しく学んだことを書き留めていきます

セクションヘッダが画面上に残らないようにする方法

UITableViewの仕様はテーブルをスクロールさせてセクションヘッダがスクロールアウトしそうになっても、画面の上端に残り続けるようになっている。
これを残らないようにするにはスクロールイベントハンドラでセクションが画面内にあるかどうかを判定し、画面外に出た場合はコンテンツをずらしてセクションヘッダが表示されないようにする。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.contentOffset.y<=self.sectionHeaderHeight&&scrollView.contentOffset.y>=0) {
        scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
    } else if (scrollView.contentOffset.y>=self.sectionHeaderHeight) {
        scrollView.contentInset = UIEdgeInsetsMake(-self.sectionHeaderHeight, 0, 0, 0);
    }
}

これはオプションで出来るようにしてほしいなぁ。
参考:iphone - Change Default Scrolling Behavior of UITableView Section Header - Stack Overflow