How do I set the height of tableHeaderView (UITableView) with autolayout?

后端 未结 12 1269
后悔当初
后悔当初 2020-11-27 10:23

I\'m been smashing my head against the wall with this for last 3 or 4 hours and I can\'t seem to figure it out. I have a UIViewController with a full screen UITableView insi

12条回答
  •  天涯浪人
    2020-11-27 11:10

    This worked for me on ios10 and Xcode 8

    func layoutTableHeaderView() {
    
        guard let headerView = tableView.tableHeaderView else { return }
        headerView.translatesAutoresizingMaskIntoConstraints = false
    
        let headerWidth = headerView.bounds.size.width;
        let temporaryWidthConstraints = NSLayoutConstraint.constraintsWithVisualFormat("[headerView(width)]", options: NSLayoutFormatOptions(rawValue: UInt(0)), metrics: ["width": headerWidth], views: ["headerView": headerView])
    
        headerView.addConstraints(temporaryWidthConstraints)
    
        headerView.setNeedsLayout()
        headerView.layoutIfNeeded()
    
        let headerSize = headerView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
        let height = headerSize.height
        var frame = headerView.frame
    
        frame.size.height = height
        headerView.frame = frame
    
        self.tableView.tableHeaderView = headerView
    
        headerView.removeConstraints(temporaryWidthConstraints)
        headerView.translatesAutoresizingMaskIntoConstraints = true
    
    }
    

提交回复
热议问题