美文网首页
UITableView中Header和Footer悬停方式

UITableView中Header和Footer悬停方式

作者: chenyihai | 来源:发表于2018-10-24 11:51 被阅读0次

    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悬停方式

          本文链接:https://www.haomeiwen.com/subject/nmuttqtx.html