2012-03-20 8 views
2

this postの後に、セクションビューヘッダーがテーブルビューをスクロールしたときにアニメーション表示されるようにしました。ただし、先頭にスクロールすると、ヘッダーは表示されません。これまで私が解決策を正確に(そして私はどこでもcontentInsetを設定しているわけではありません)続いていたことを考えると、私はかなり困惑しています。誰かが私を正しい方向に向けることができますか?ここに私のコードは次のとおりです。UITableViewセクションヘッダースクロール

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGPoint p = scrollView.contentOffset; 

    CGFloat height = [self tableView:self.agendaDetailTable heightForHeaderInSection:0]; 

    if (p.y <= height && p.y > 0) { 
    self.agendaDetailTable.contentInset = UIEdgeInsetsMake(-p.y, 0, 0, 0); 
    } else if (p.y >= height) { 
    self.agendaDetailTable.contentInset = UIEdgeInsetsMake(-height, 0, 0, 0); 
    } 
} 
+0

スニペットは飛行機とグループ化されたテーブルの両方に対して完全に機能します。 'p.y'と' height'をログに記録してみてください。 –

+0

最初のセクションのヘッダーがこのコードで表示されます。鉱山はヘッダーのすぐ近くで停止し、最初のtableviewセル全体が表示されます。私はp.yと高さの値を記録しました。高さは134のままで、pyの範囲は0から最大のcontentOffsetまでですが、先頭にスクロールすると134で停止します。 – Jacob

+0

また、下にスクロールしてヘッダービューが部分的にオフスクリーンになると、それがまったく役に立ったらトップ。 – Jacob

答えて

4

は、それがコンテンツのエッジの上にスクロールし、それが起こっている間オフセットを書き換えることができるようにテーブルのbouncesalwaysBounceVerticalを有効にします。

1

Jacobのソリューションはうまくいきます。 1つの問題は、スクロール後にコンテンツが1ピクセルずれていることです。私は黒い枠線を持つヘッダーを持っていて、スクロールしてから上に戻ると問題を見ることができます。 p.y> 0をp.y> = 0に変更すると、スクロールバックしてゼロに戻すときにヘッダーが正しく復元されます。

/* to fix floating headers */ 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGPoint p = scrollView.contentOffset; 

    CGFloat height = (float) DASHBOARD_SUMMARY_PANEL_HEADER_HEIGHT; 

    if (p.y <= height && p.y >= 0) { 
     self.SummaryPanelTableView.contentInset = UIEdgeInsetsMake(-p.y, 0, 0, 0); 
    } else if (p.y >= height) { 
     self.SummaryPanelTableView.contentInset = UIEdgeInsetsMake(-height, 0, 0, 0); 
    } 
}