如何让UITableViewHeaderFooterView不停在顶端

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


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

搞定收工!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载地址Demo UICollectionView详解 section 、item 全家福:UICollectio...
    kakukeme阅读 1,018评论 0 51
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,372评论 25 708
  • 我们在上一篇《通过代码自定义不等高cell》中学习了tableView的相关知识,本文将在上文的基础上,利用sto...
    啊世ka阅读 1,533评论 2 7
  • 一、NavigationBar UIBarItem UIBarItem在iOS11在中新增landscapeIma...
    灰s阅读 3,844评论 5 11
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,211评论 30 472