表视图单元格和表视图标题视图的大小
Posted
技术标签:
【中文标题】表视图单元格和表视图标题视图的大小【英文标题】:Sizing of table view cell and table view header view 【发布时间】:2017-04-05 14:04:05 【问题描述】:我有一个表格视图,它显示表格视图单元格和标题视图(搜索栏)。我希望表格视图单元格的宽度为 设备屏幕大小的 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?
【问题讨论】:
我会尝试创建恒定宽度的标题(ViewController 的宽度),然后将 tableView 的clipsToBounds
属性设置为false
。不确定它是否会起作用,但值得一试。
为什么不简单地将表格设置为屏幕的宽度...让您的标题查看整个宽度...然后让您的单元格宽度为 0.9?
@DonMag 谢谢。问题是我不知道如何使我的单元格宽度为 0.9。我还没有找到任何方法或方法来做到这一点。
你是如何设计你的细胞的?您可以在单元格内使用约束,就像在表格中使用它们一样容易......
谢谢。我对表格视图单元进行了子类化,并在 cellForItem
方法中使用了这个自定义类。我应该在该方法中添加约束吗?
【参考方案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
【讨论】:
对不起,我不明白。我应该将表格视图单元格添加到smallerView
吗?
您需要制作一个自定义的 tableviewcell 并向每个单元格添加 smallViews。查看我的更新【参考方案2】:
您的自定义单元格“以”ContentView“开头”,它使用表格视图的插图来设置其宽度...
所以,如果你有一堆元素/对象要添加到内容视图中......
您最好的选择可能是首先添加一个标准的UIView
作为“容器视图”...(只是我的命名)...
然后,将该“包含视图”的约束设置为 contentView 宽度的 0.9...
您添加到“包含视图”的所有元素都将受到相对于它的约束,因此将全部保持在 0.9 宽度内...
【讨论】:
以上是关于表视图单元格和表视图标题视图的大小的主要内容,如果未能解决你的问题,请参考以下文章