美文网首页iOS技术ios新知识
如何让UITableViewHeaderFooterView不停

如何让UITableViewHeaderFooterView不停

作者: 千煌89 | 来源:发表于2014-11-25 17:42 被阅读10070次

    现有一个需求如下图所示:


    01餐饮.png

    注意图中的“已发布”,这个image是跨view的。图中的餐点内容是动态获得的,样式固定,显然很适合用cell写。而时间戳位置的view又多种实现方法。

    一、tableviewcell

    我首先尝试了将titleview放在每个section的第一个cell里,问题很快就来了,效果如下:


    FF8A9EE810A06B47298B48B7EE8FB0D4.png

    当cell滑出屏幕,再滑进来,重用cell的时候,底下的cell会遮住上面的cell。

    二、UITableViewHeaderFooterView

    我将titleview作为UITableViewHeaderFooterView,放在每个section头部,问题随之而来,如下图所示:


    18CD6D1B70709DC65C35F034EF38D2EC.png

    UITableViewHeaderFooterView会停留在顶部,与下面的cell重叠。感觉挺奇怪的。

    三、方法二的解决办法

    我尝试在tableview滚动的时候计算高度,并隐藏titleview,终于让我找到了一个方法:

    //去掉UItableview headerview黏性(sticky)
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
        if (scrollView == self.tableView)
        {
            CGFloat sectionHeaderHeight = 64; //sectionHeaderHeight
            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);
            }
        }
    }
    

    方法起作用了,如下图所示:


    EB16FAFA097EDF70219CBAC0A75C8DE3.png

    搞定收工!

    相关文章

      网友评论

      • 你好牛:关键是 footer View 吗,没有用 ,
      • unhangcorn:哥们,你这图太大了,看着不方便
      • 草原野马:这个方法,只能控制header不悬浮,footer单独控制不悬浮的有没有
      • wangshuCoding:哈~和我们的需求一毛一样~感谢分享~
      • 762bdb3a8148:tableview的style是group就可以了吧。。
        73f8dbec2d8f:是的,tableview的style是group就可以了
        762bdb3a8148:@千煌89 因为现在除了你说的这个效果其他是一样的
        千煌89:@Moonlight_CN 大概吧,没试过,不过现在基本没人用group了
      • 怎样m:希望有个简单的demo 学习下哦 可以么
      • 千煌89:@JasonXin 就这么一段代码,其他的随便写个tableview就行了,写个tableviewHeaderFooterView加上去就行
      • _李布斯:能给个demo学习学习吗?

      本文标题:如何让UITableViewHeaderFooterView不停

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