Autolayout约束以水平设置标签

时间:2016-09-20 09:47:47

标签: ios autolayout

我有一个带有两个UILabel的栏:

[LeftMsg                          RightMsg]

我想设定的规则是:

  1. RightMsg始终完全可见,右对齐并占据所需空间。
  2. LeftMsg左对齐,占用余下的房间。
  3. 例如,如果LeftMsg读取"This very long message does not fit the bar",则必须显示如下:

     [The very long message does n... RightMsg]
    

    我按如下方式设置水平自动布局约束:

    LeftMsg.leading = Superview.leading
    RightMsg.trailing = Superview.trailing
    LeftMsg.trailing <= RightMsg.leading
    

    (如果我在最后一个约束中使用相等,XCode告诉内容优先级不明确。)

    现在它的工作原理如下:

     [The very long message does not fit the...]
    

    这不是我需要的。

    任何人都可以建议如何正确设置约束以实现我的需求?

3 个答案:

答案 0 :(得分:5)

我认为您可以为左侧标签设置比右侧消息标签更低的水平拥抱优先级,同时为右侧消息标签设置比左侧消息标签更高的水平抗压性优先级。

例如,您可以为此标签设置内容拥抱优先级和压缩阻力优先级。

左标签:内容拥抱优先级(H:250,V:25​​1)              抗压强度优先(H:750,V:750)

右标签:内容拥抱优先级(H:251,V:25​​1)              抗压强度优先(H:751,V:750)

您可以在此tutorial中查看有关内容拥抱和抗压缩性的更多信息。

答案 1 :(得分:4)

  1. 将左侧标签的内容抗压性属性设置为750
  2. content Compression resistance property

    1. 将正确标签的内容拥抱优先级设置为250
    2. Content Hugging Priority

答案 2 :(得分:-2)

请遵循此,

  • 首先在View上设置两个标签。

    enter image description here

    1. 设置View的约束是Top,Bottom,left和Horizo​​ntal center 对齐。
    2. 左边标签的设置约束是Top,Bottom,Leading和 尾随。
    3. 为右侧标签设置约束为“顶部”,“底部”和“尾随”。
    4. 选择两个标签并设置“等高”和“等宽”。

...成品