2017-04-05 125 views
1

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

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

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表视图宽度?

+0

我会尝试创建恒定宽度的标题(ViewController的宽度),然后将tableView的'clipsToBounds'属性设置为'false'。不知道它会工作,但值得一试。 –

+0

为什么不简单地让你的表格成为屏幕的宽度......让你的标题查看全宽...然后让你的单元格的宽度为0.9? – DonMag

+0

@DonMag谢谢。问题是我不知道如何让我的单元格宽度为0.9。我还没有找到任何方式或方法来做到这一点。 – Cesare

回答

1

您的自定义单元的内容查看,它采用采用表视图的插图来设置它的宽度“开头” ...

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

你最好的选择是可能首先添加一个标准UIView为“容器视图” ......(只是我的它命名)...

然后,设置限制在那个“包含视图”是contentView的宽度的0.9 ...

所有你添加到“包含视图”的元素将被约束相对于它,因此将所有留整体0.9宽度内...

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 
    } 
} 
+0

对不起,我不明白。我应该将table view单元添加到'smallerView'吗? – Cesare

+1

您需要制作一个自定义tableviewcell并将smallViews添加到每个单元格。查看我的更新 – dmorrow

相关问题