如何使用自动布局处理UITableViewCell内的UILabel?

时间:2016-08-31 21:14:14

标签: ios uitableview cocoa-touch autolayout

如何使用自动布局处理UITableViewCell内的UILabel?根据标签的长度..这是我的观点:

enter image description here

我希望蓝色标签位于中心,但如果长的话,不要在同一个单元格中穿过邻居标签。

我在它们之间添加了约束,但它不会在中心。

对这种类型的细胞有任何好的限制吗?

3 个答案:

答案 0 :(得分:2)

让我们将标签命名为title_labeldetail_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。