UITableView的section headerView不停留

1、修改 UITableView 的 style 属性设置为 Grouped. 这时所有的section header都会随着scrollview滚动了。不过 grouped 和 plain 的样式有轻微区别,切换样式后也许需要重新调整UI。

2、. 如果不使用 Grouped 这种样式, 也可以通过重载 scrollView 的 delegate 来达到目的

OC版本

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat sectionHeaderHeight = 40;
    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);
    }
}

Swift版本

func scrollViewDidScroll(scrollView: UIScrollView) {
    let headerH:CGFloat = 20
    
    if scrollView.contentOffset.y <= headerH && scrollView.contentOffset.y >= 0{
        scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0)
    } else if scrollView.contentOffset.y >= headerH {
        scrollView.contentInset = UIEdgeInsetsMake(-headerH, 0, 0, 0);
    }
}

你可能感兴趣的:(UITableView的section headerView不停留)