表视图单元格和表视图标题视图的大小调整

时间:2017-04-05 14:04:05

标签: ios swift uitableview

我有一个表格视图,显示表格视图单元格和标题视图(搜索栏)。我希望表视图单元格的宽度<设备屏幕大小的<0.9> ,并且标题视图具有相同的大小。但是,这是不可能的,因为单元格和标题视图都包含在表视图中。

当我使用布局锚点约束时,所有内容都会调整大小(包括标题视图)。

self.tableView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true

// here's the 0.9 multiplier
self.tableView.widthAnchor.constraint(equalTo: self.view.widthAnchor, multiplier: 0.9).isActive = true
self.tableView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
self.tableView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: 0).isActive = true

如何确保表视图标题与视图控制器的宽度相同,同时保持表视图宽度为主视图的0.9?

2 个答案:

答案 0 :(得分:1)

最好不要尝试调整TableViewCell或其contentView的约束。但是,您可以将这两个视图设置为背景颜色为.clear,然后使用您想要的约束将子视图添加到contentView

class CustomCell: UITableViewCell {

    let smallerView = UIView()
    override init(frame: CGRect) {
        super.init(frame)
        smallerView.translatesAutoresizingMaskIntoConstraints = false
        contentView.addSubview(smallerView)
        smallerView.widthAnchor.contraint(equalTo: contentView.widthAnchor, multiplier: 0.9).isActive = true
        smallerView.heightAnchor.contraint(equalTo: contentView.heightAnchor).isActive = true
    }
}

答案 1 :(得分:1)

您的自定义单元格&#34;以&#34;开头ContentView,它使用表格视图的插图设置其宽度......

所以,如果你有一堆元素/对象要添加到内容视图......

您最好的选择可能是首先添加标准UIView作为&#34;容器视图&#34; ...(只是我的命名)......

然后,设置约束&#34;包含视图&#34;为contentView的宽度的0.9 ...

您添加到&#34;包含视图&#34;的所有元素将被约束相对于它因此将全部保持在0.9宽度内......