我有一个表格视图,其中行高度根据其UILabel内容是动态的(使用UITableViewAutomaticDimension)。现在,我需要在表格视图周围设置15个点的边框,该边框也会随着表格视图的高度而变化。
我尝试了两种方法-
获取一个UIView并将tableView置于约束之上 每边15个(顶部,底部,左侧和右侧)。
在tableView周围添加了四个UIView,每个UIView的约束都为0
查看到tableView。 (这样,视图始终会附加到
tableView)。
在这两种方法中,底部视图(或底部区域)总是向tableView底部留出一个空间。
要达到tableView的动态高度,我正在使用以下代码-
open override func viewDidLayoutSubviews() {
if isPopup! {
tableView.frame = CGRect(x: tableView.frame.origin.x, y: tableView.frame.origin.y, width: tableView.frame.size.width, height: tableView.contentSize.height + 190)
tableView.reloadData()
}
}
这是我的情节提要和模拟器上的结果-
如何使底部UIView始终与tableView底部相连,使其看起来像tableView周围的边框?
答案 0 :(得分:1)
使用第一种方法和使用其contentSize
来确定其高度的自定义表格视图子类。这样一来,您可以删除viewDidLayoutSubviews
中的代码,应该会很方便。
class AutoHeightTableView: UITableView {
override var contentSize: CGSize {
didSet {
invalidateIntrinsicContentSize()
}
}
override var intrinsicContentSize: CGSize {
return CGSize(width: UIView.noIntrinsicMetric,
height: contentSize.height)
}
}