UITableView中Header和Footer悬停方式
UITableView中Header和Footer悬停方式
注:UITableView的UITableViewStyle
样式分为UITableViewStylePlain和UITableViewStyleGrouped两种;
plain样式下区头和区尾是悬浮的(即拖动表的时候区头和区尾不会消失,一直显示在界面上);
grouped样式区头和区尾是随表一起滑动的。静态的tableview需要分区时(XIB)样式只能是Grouped。
一: 2个都悬停 UITableViewStylePlain
二:2个都不悬停 UITableViewStyleGrouped
三:Header不悬停,Footer悬停,使用UITableViewStylePlain
这里的50是Header的高度,根据需要自行改变
以下代码都写在scrollViewDidScroll代理方法中
if scrollView.contentOffset.y <= 50 && scrollView.contentOffset.y >= 0 { scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0) }else if scrollView.contentOffset.y >= 50 { scrollView.contentInset = UIEdgeInsetsMake(-50, 0, 0, 0) }
四:Header悬停,Footer不悬停,使用UITableViewStylePlain
这里需要在viewDidLoad中先加一句,作用是在页面滚动之前就先隐藏第一个section的Footer,50是Footer的高度,根据需求自行改变
self.tableView.contentInset =UIEdgeInsetsMake(0,0,-50,0)
以下代码都写在scrollViewDidScroll:(UIScrollView *)scrollView代理方法中
if (scrollView == self.tableView) {
CGRect rectInTableView = [self.tableView rectForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
CGRect rect = [self.tableView convertRect:rectInTableView toView:self.tableView.superview];
if (rect.origin.y > -self.tableView.contentSize.height) {
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, -50, 0);
}
}