【问题标题】:ios 6: Center UILabel vertically using Auto Layout constraintsios 6:使用自动布局约束垂直居中 UILabel
【发布时间】: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 应该是什么。

标签: iphone ios ios6 centering autolayout


【解决方案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 高度???

      或者您可以以编程方式在您的自定义单元格中重新分配标签位置。

      【讨论】:

        猜你喜欢
        • 2016-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多