How to set the height of table header in UITableView?

前端 未结 17 1409
没有蜡笔的小新
没有蜡笔的小新 2020-12-02 22:00

I have gone through Apple docs about UITableView class and delegate reference but couldn\'t find the way to set the table header height explicitly.

I set Table cell

17条回答
  •  悲哀的现实
    2020-12-02 22:50

    If you programatically set the tableHeaderView, then just set it inside viewDidLayoutSubviews.

        override func viewDidLayoutSubviews() {
            super.viewDidLayoutSubviews()
            setupTableViewHeader()
        }
    
        private func setupTableViewHeader() {
            // Something you do to set it up programatically...
            tableView.tableHeaderView = MyHeaderView.instanceFromNib() 
        }
    

    If you didn't set it programatically, you need to do similar to what @Kris answered based on this link

        override func viewDidLayoutSubviews() {
            super.viewDidLayoutSubviews()
            sizeHeaderToFit()
        }
    
        private func sizeHeaderToFit() {
            if let headerView = tableView.tableHeaderView {
                headerView.setNeedsLayout()
                headerView.layoutIfNeeded()
    
                let height = headerView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
                var frame = headerView.frame
                frame.size.height = height
                headerView.frame = frame
    
                tableView.tableHeaderView = headerView
            }
        }
    
    

提交回复
热议问题