TableView Head Footer 不停留实现方式

系统默认的header,footer停留挺棒的,但是有时候项目里设计明确不停留,这个时候就比较蛋疼,实现的方式比较多,下面提供一种比较简单的实现方式。

思路:系统实现停留的方式是通过改变header,footer的frame.y来实现的,所以只需要按照我们的方式重写frame属性

tableview上的内容视图是按照左->右,上->下的方式布局的,所以tableview通过datasource确定数据之后每一个header,cell,footer,section都有了确定的frame了。

class TableViewHeaderFooterView: UIView {
    
    enum Style {
        case header, footer
    }
    /*当前header,footer所在的section的frame 通过UITableViewDelegate方法获取即可
     func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
         let rectForSection = tableView.rect(forSection: section)
         let header = TableViewHeaderFooterView(rectForSection: rectForSection, style: .header)
         header.backgroundColor = .red
         return header
     }
     */
    fileprivate(set) var rectForSection: CGRect
    fileprivate(set) var style: Style
    override var frame: CGRect {
        set{
            let sectionRect = rectForSection
            let top: CGFloat
            switch style {
            case .header:
                top = sectionRect.minY
            case .footer:
                top = sectionRect.maxY - newValue.height
            }
            let newFrame = CGRect(x: newValue.minX, y: top, width: newValue.width, height: newValue.height)
            super.frame = newFrame
        }
        get{
            return super.frame
        }
    }
    
    init(rectForSection: CGRect, style: Style) {
        self.rectForSection = rectForSection
        self.style = style
        super.init(frame: .zero)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 12,971评论 3 38
  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 10,248评论 1 9
  • 版权声明:未经本人允许,禁止转载. 1. TableView初始化 1.UITableView有两种风格:UITa...
    萧雪痕阅读 7,911评论 2 10
  • 这两天闲来无事,逛了下某主题贴吧。原本就只是抱着浏览旁观的放松心态而来,没想到看到了一大堆的留言都是各种讽刺、挖苦...
    D088_long_深圳阅读 1,618评论 0 0
  • 1° 粒粒说:“08年地震的时候我们还在上初中,大家都从教室冲出去了,我第一个想到居然不是他,我在担心我的闺蜜在厕...
    宁暖暖阅读 3,255评论 1 1