2012-03-20 120 views
2

我跟着this post使我的部分标题在滚动tableview时出现在视图之外。但是,当滚动回顶端时,标题不会返回到视图中。永远。鉴于我完全按照解决方案(并且我没有在其他地方设置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'和'高度'。 – 2012-03-20 21:22:56

+0

第一部分中的标题用这段代码重新回到您的视图中?矿井立即停止标题,整个第一个tableview单元格可见。我记录了p.y和高度值。高度依然为134,py的范围从0到最大contentOffset,但是当滚动回顶端时,它停在134. – Jacob 2012-03-20 22:38:24

+0

此外,当我向下滚动并且标题视图部分偏离屏幕时,我无法滚动回到如果这有帮助的话。 – Jacob 2012-03-20 22:44:53

回答

4

为表启用bouncesalwaysBounceVertical允许它在内容的边缘滚动,并改写,而这是发生偏移。

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); 
    } 
}