iOS 动态表格视图周围有一个边框
Posted
技术标签:
【中文标题】iOS 动态表格视图周围有一个边框【英文标题】:iOS dynamic tableview to have a border around it 【发布时间】:2018-10-03 15:59:39 【问题描述】:我有一个表格视图,其中行高根据其 UILabel 内容是动态的(使用 UITableViewAutomaticDimension)。现在,我需要在表格视图周围设置一个 15 点的边框,它也会根据表格视图的高度而变化。
我尝试了两种方法 -
取了一个 UIView 并将 tableView 放在它上面并带有约束 每边 15 个(顶部、底部、左侧和右侧)。
在 tableView 周围添加了四个 UIView,每个约束为 0 查看到 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 周围的边框?
【问题讨论】:
【参考方案1】:使用您的第一种方法和自定义表格视图子类,该子类使用其contentSize
来确定其高度。这样您就可以删除 viewDidLayoutSubviews
中的代码,并且应该可以继续使用。
class AutoHeightTableView: UITableView
override var contentSize: CGSize
didSet
invalidateIntrinsicContentSize()
override var intrinsicContentSize: CGSize
return CGSize(width: UIView.noIntrinsicMetric,
height: contentSize.height)
【讨论】:
我该如何使用它?我有点困惑! 另外,我得到 Type 'UIView' has no member 'noIntrinsicMetric' 错误 你只需要像上面那样创建类。然后在界面生成器中,您必须将表视图的“自定义类”设置为这个新创建的类。就是这样。关于错误,您可能使用的是旧版本的 Swift。试试UIViewNoIntrinsicMetric
而不是UIView.noIntrinsicMetric
。以上是关于iOS 动态表格视图周围有一个边框的主要内容,如果未能解决你的问题,请参考以下文章