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