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

            }  

  } 

你可能感兴趣的:(UITableView中Header和Footer悬停方式)