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 动态表格视图周围有一个边框的主要内容,如果未能解决你的问题,请参考以下文章

带有图像视图和标签的 iOS UITableViewCell 动态大小的表格视图单元格

iOS 如何使用两个固定部分和一个动态表格视图进行布局?

具有动态高度单元格但所有单元格同时显示的 iOS 表格视图

ios swift - 表格视图单元格动态高度取决于设备

iOS动态地将新单元格加载到表格视图的底部

IOS - 如何使用自动布局有一个可滚动的表格视图标题