如何使用自动布局处理UITableViewCell内的UILabel?根据标签的长度..这是我的观点:
我希望蓝色标签位于中心,但如果长的话,不要在同一个单元格中穿过邻居标签。
我在它们之间添加了约束,但它不会在中心。
对这种类型的细胞有任何好的限制吗?
答案 0 :(得分:2)
让我们将标签命名为title_label
和detail_label
,即在您的第三个小区'服务'是标题,另一个长标签是详细的。
予。将title_label的前导空格设置为superview根据需要设置常量。并创建它的出口让它成为constraint_title_leading
。
II。在title_label
的容器中垂直设置中心。
III。现在将detail_label
的前导空格设置为title_label
的尾随。让常数为8分。创建一个名称为constraint_detail_leading
IV。将detail_label设置为垂直居中w.r.t title_label
或superview。
VI。将detail_label
的内容对齐设置为中心。
VII。将详细信息标签的尾随空格设置为superview不关心它的常量我们将在代码中更改它。将其名称设为constraint_detail_trailing
VIII。设置单元格的数据源后,调用此方法。
func adjustConstraints() -> Void {
let titleWidth = (self.title_label.text! as NSString).boundingRectWithSize(CGSizeMake(600, 600), options: .UsesLineFragmentOrigin,
attributes: [NSFontAttributeName : self.title_label.font], context: nil).width
self.constraint_detail_trailing.constant = self.constraint_title_leading.constant + titleWidth + self.constraint_detail_leading.constant
self.layoutIfNeeded()
}
要启用多行,即行的动态高度,而不是detail_label
的中心约束,请将其固定到顶部和底部wrt superview,使得顶部常量等于底部常量,并将其numberOfLines
设置为0。并设置self.tableView.rowHeight = UITableViewAutomaticDimension
答案 1 :(得分:0)
在与您的“服务”标签相关的蓝色标签上添加一个主要选择边距(10px)约束
答案 2 :(得分:0)
删除标签上的horizantol中心约束,并为其添加前导/尾随约束。然后将文本对齐设置为UILabel的中心。
请注意,您还应该在UILabel上具有顶部和底部约束。并且只有"服务"的UILabel。