我有UILabel
我有时想在一个单元格中垂直居中。这必须以编程方式完成。我已经尝试添加以下约束来居中它(locName是UILabel):
[cell addConstraint:[NSLayoutConstraint constraintWithItem:cell
attribute:NSLayoutAttributeCenterY relatedBy:0 toItem:cell.locName
attribute:NSLayoutAttributeCenterY multiplier:1 constant:0]];
这是我得到的结果:
它看起来像是居中,但可能会改变UILabel
的高度?
这是IB中的视图控制器:
如何以编程方式实现垂直居中?
答案 0 :(得分:3)
这个怎么样: 除了居中约束之外,还要为cell.locName添加一个高度约束以使其更高。
[cell.contentView addConstraint:
[NSLayoutConstraint constraintWithItem:cell.locName
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:20]];
答案 1 :(得分:2)
您可能正在点击单元格中已有的其他约束。添加约束不会消除其他约束 - 如果顶部和底部标签之间有间距,例如,为了满足此要求和新的居中约束,顶部标签的高度必须缩小。
您可能需要为这些其他约束设置出口并将其移除以实现居中设计。
答案 2 :(得分:0)
尝试在中心后达到UIlabel高度???
或者您可以以编程方式在自定义单元格中重新分配标签位置。