我跟着this post在滚动tableview时使我的节标题动画显示在视图之外。但是,当滚动回顶部时,标题不会返回到视图中。永远。鉴于我完全遵循了解决方案(我没有在其他任何地方设置contentInset),我感到非常困惑。谁能指出我正确的方向?这是我的代码:
- (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 :(得分:4)
为表格启用bounces
和alwaysBounceVertical
,以允许它滚动内容的边缘,并在发生这种情况时重写偏移量。
答案 1 :(得分:1)
雅各布的解决方案效果很好。一个问题是滚动后内容偏离一个像素。我有一个带黑色边框的标题,滚动后可以看到问题,然后返回到顶部。通过改变p.y&gt; 0到p.y&gt; = 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);
}
}