iOS动态表格视图周围有边框

时间:2018-10-03 15:59:40

标签: ios swift uitableview

我有一个表格视图,其中行高度根据其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()
        }
    }

这是我的情节提要和模拟器上的结果-

Simulator Screenshot Storyboard screenshot

如何使底部UIView始终与tableView底部相连,使其看起来像tableView周围的边框?

1 个答案:

答案 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)
    }

}