当 TableView 样式属性设置 UITableViewStyleGroup 时,HeaderInSection 会随着滚动,但是每个 Header 会有多余的高度(相比heightForHeaderInSection高度来说)。
当 TableView 样式属性设置 UITableViewStylePlain 时,添加的 HeaderInSection 在滑动时会固定在顶部,与 Cell 重叠
如下图:
解决方案如下:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView == self.tableView)
{
CGFloat sectionHeaderHeight = 40;//此高度为heightForHeaderInSection高度值
if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {
scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
} else if (scrollView.contentOffset.y>=sectionHeaderHeight) {
scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);
}
}
}
使用如上代码可以解决,HeaderInSection 方法 View 会随着滚动,不会产生遮挡效果
如有导航栏,Table 会被导航栏遮挡,在 ViewDidLoad 中加入如下代码:
self.edgesForExtendedLayout = UIRectEdgeNone;
即可解决导航遮挡 TableView
文章为原创,来自 软曼网:http://www.ruanman.net