具有动态高度的viewForHeader?

时间:2017-06-28 08:11:42

标签: ios uitableview

我在viewForHeader中为table views返回了动态高度的视图。我有2个部分。但是我得到的视图是第0部分中的标题部分1和部分1没有视图即将到来的空白即将到来。下面是代码。

        tblList.estimatedSectionHeaderHeight = 100
        tblList.sectionHeaderHeight = UITableViewAutomaticDimension


        func numberOfSections(in tableView: UITableView) -> Int {
            return 2
        }

       func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        print("Section: \(section)")
            let view = UIView()
            let lbl = UILabel()
           view.backgroundColor = UIColor.LGColor()

            view.translatesAutoresizingMaskIntoConstraints  = false
            lbl.translatesAutoresizingMaskIntoConstraints = false
            view.addSubview(lbl)
            lbl.font = UIFont.subHeadline

            view.addConstraint(NSLayoutConstraint(item: lbl, attribute: .top, relatedBy: .equal, toItem: view, attribute: .top, multiplier: 1, constant: 3))

            view.addConstraint(NSLayoutConstraint(item: lbl, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1, constant: 10))

            view.addConstraint(NSLayoutConstraint(item: lbl, attribute: .trailing, relatedBy: .lessThanOrEqual, toItem: view, attribute: .trailing, multiplier: 1, constant: -10))

            view.addConstraint(NSLayoutConstraint(item: lbl, attribute: .height, relatedBy:.greaterThanOrEqual, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 21))

            view.addConstraint(NSLayoutConstraint(item: view, attribute: .bottom, relatedBy: .equal, toItem: lbl, attribute: .bottom, multiplier: 1, constant: 3))


   view.addConstraint(NSLayoutConstraint(item: view, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: tableView.frame.size.width))

        if section == 0 {
            view.backgroundColor = .red
        } else {
            view.backgroundColor = .yellow
        }
        return view
}

2 个答案:

答案 0 :(得分:1)

这是因为您设置了view.translatesAutoresizingMaskIntoConstraints = false,对该行进行评论并检查是否可以看到这两个部分

答案 1 :(得分:1)

之所以发生这种情况,是因为您为标题视图设置了translatesAutoresizingMaskIntoConstraints = false,请删除此行

TableView中创建了删除约束,两个视图的来源point {0, 0}

enter image description here