ios 6:使用自动布局约束垂直居中 UILabel
Posted
技术标签:
【中文标题】ios 6:使用自动布局约束垂直居中 UILabel【英文标题】:ios 6: Center UILabel vertically using Auto Layout constraints 【发布时间】:2012-09-28 17:11:27 【问题描述】:我有一个UILabel
我有时想在单元格中垂直居中。这必须以编程方式完成。我尝试添加以下约束以使其居中(locName 是 UILabel):
[cell addConstraint:[NSLayoutConstraint constraintWithItem:cell
attribute:NSLayoutAttributeCenterY relatedBy:0 toItem:cell.locName
attribute:NSLayoutAttributeCenterY multiplier:1 constant:0]];
这是我得到的结果:
它看起来像它的中心,但可能会改变 UILabel
的高度或其他什么?
这是 IB 中的视图控制器:
如何以编程方式实现垂直居中?
【问题讨论】:
为什么必须以编程方式完成?为什么不能简单地使用 IB 设计一个不同的单元并隔离它而不是这个? 谢谢!这将解决我的具体情况。如果我们不处理细胞,你会怎么做?假设我们只是试图以编程方式将标签居中在通用 UIView 中? 这可能不是最好的方法,但我可能会计算高度并做一些数学运算来确定框架的 CGRect 应该是什么。 【参考方案1】:您可能遇到了单元格中已经存在的其他约束。添加约束不会使其他约束消失 - 例如,如果您在顶部和底部标签之间有间距,为了满足这个和新的居中约束,顶部标签的高度将不得不缩小。
您可能需要为这些其他约束创建出口并删除它们以实现居中设计。
【讨论】:
【参考方案2】:这个怎么样: 除了居中约束之外,为 cell.locName 添加一个高度约束以使其更高。
[cell.contentView addConstraint:
[NSLayoutConstraint constraintWithItem:cell.locName
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:20]];
【讨论】:
【参考方案3】:居中后尝试达到 UIlabel 高度???
或者您可以以编程方式在您的自定义单元格中重新分配标签位置。
【讨论】:
以上是关于ios 6:使用自动布局约束垂直居中 UILabel的主要内容,如果未能解决你的问题,请参考以下文章