美文网首页计算机技术一锅炖动画设计学习
iOS UITableView section固定header和

iOS UITableView section固定header和

作者: DevYu | 来源:发表于2016-01-13 14:29 被阅读8271次

    UITableView很多情况下我们需要分组section,并且需要加上头部视图header和底部视图footer,默认情况下这两个视图是不固定的它们会悬浮在表格的上面。但是我们今天要让他们固定不动,让UITableView 固定header和固定footer我们需要知道一个方法:

        //当scroview滑动视图时触发,uitableview集成它所以表格也可以使用
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView;
    

    1.首先固定header的方法有两个一个是在我们上面的方法里面重写 contentOffset:

    //固定头部视图
    - (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);
    } 
    }
    

    还有一个更简单固定表格header方法是,选择我们表格的样式这里分两种情况

    第一种你自己创建的uitableview:

     //使用UITableViewStylePlain样式创建表格,这不妨碍你使用头部视图
    UITableView *table = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
    

    第二种你继承UITableViewController,你可以通过下面的方法改变样式:

      - (id)initWithStyle:(UITableViewStyle)style
    {
        self = [super initWithStyle:style];
        if (self) {
           style = UITableViewStylePlain;
        }
        return self;
    }
    

    设置表格的样式为UITableViewStylePlain之后你会发现头部视图乖乖的固定不动了

    2.固定footer,底部视图如果我们使用UITableViewStylePlain这个样式它还是不会固定的,所以这有用第一种方式固定它:

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    
       CGFloat sectionFooterHeight = 40;
       CGFloat ButtomHeight = scrollView.contentSize.height - self.tableView.frame.size.height;
        
    if (ButtomHeight-sectionFooterHeight <= scrollView.contentOffset.y && scrollView.contentSize.height > 0) {
        scrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
    } else  {
        scrollView.contentInset = UIEdgeInsetsMake(0, 0, -(sectionFooterHeight), 0);
    }
    
    }
    

    综合以上的方法UITableView section固定header和固定footer的方法是改变样式固定header,以及在- (void)scrollViewDidScroll:(UIScrollView *)scrollView;固定footer。

    3.经过实践以上的方法会影响表格的下拉刷新效果。所以下面提供一种更好方案,我们的头部视图靠我们第一种就行了,那底部视图为了让它不影响刷新效果,我们就不在滑动方法里面重写方法固定了,我们可以改用一个section来作为底部视图,当然这个section没有头部和底部视图只是一行单纯的标题而已,虽然判断麻烦了点不过为了好效果这些也就没什么了。

    相关文章

      网友评论

      • xxttw:给力
      • 之城之城:既要固定header又要固定footer解决办法是:使用你说的UITableViewStyleGrouped固定header,使用你说的- (void)scrollViewDidScroll:(UIScrollView *)scrollView,来固定footer
      • 之城之城:貌似,既要固定header又要固定footer就不好办了。。对吗?
      • 1643cc5a88a2:group类型使用第一种方式不可以固定head呀,求解

      本文标题:iOS UITableView section固定header和

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