UIView和TableView可调整大小

时间:2020-07-04 14:35:07

标签: ios swift uiview tableview

image 1

image 2

如您所见,我的故事板如图1所示,但在模拟器中,它如图2所示。 我如何做到这一点,如果包含一些数据,那么View内的tableView将会变大。如果没有,它将被隐藏。

此刻,如果它包含一些数据,则UIview不会更改高度,并且uitableview几乎不可见。

此行无济于事:

ResultSet

------------------第2部分--------这是viewController ---------

的代码
tableView.estimatedRowHeight = 44.0
tableView.rowHeight = UITableView.automaticDimension

enter image description here

1 个答案:

答案 0 :(得分:0)

estimatedRowHeight并为tableView设置rowHeight的功能是设置tableView单元格的高度,而不是设置tableView本身的高度。

当您在tableView中插入或删除单元格时,tableView的contentSize会发生变化。

解决方案1 ​​: 您可以使用UITableView的以下子类,该子类会自动更改intrinsicContentSizecontentSize的更改,以便AutoLayout负责其余的工作。在视图控制器中使用此子类代替 UITableView 。 如果您的tableView没有单元格,则intrinsicContentSize的高度可以设置为0。

我建议您阅读有关视图的固有内容大小here的更多信息。

class AutoSizingTableView: UITableView{
    override var intrinsicContentSize: CGSize {
        self.layoutIfNeeded()
        return CGSize(width: UIView.noIntrinsicMetric, height: contentSize.height)
    }
    
    override var contentSize: CGSize {
        didSet{
            self.invalidateIntrinsicContentSize()
        }
    }
    
    override func reloadData() {
        super.reloadData()
        self.invalidateIntrinsicContentSize()
    }
}

解决方案2 : 您可以在tableView中手动添加 height约束,并根据contentSize或根据设计规范有其他要求,根据需要更改其常量。

相关问题