iOS AutoLayout - 标签与附近标签重叠

时间:2016-04-21 16:58:40

标签: ios cocoa-touch autolayout

我遇到标签限制问题。

我的目标是在tableViewCell的同一Y坐标上有2个标签。其中一个标签固定在左侧,另一个标签固定在右侧。

就像那样:

[This is the first label]      [Second]

第一个标签应该具有基于其必须显示的文本的动态宽度,但它应该结束大约20个点到第二个标签。

我尝试了很多约束,但有时第一个标签似乎将第二个标签推出视图,有时第一个标签只是重叠第二个标签,如下例所示:

enter image description here

第一个标签有以下限制:

Top Space to Superview
Leading Space to Superview
Bottom Space to a third label
Trailing Space to THE second Label (<= 20)

正确显示两个标签的正确方法是什么?

提前致谢,感谢您的帮助!

修改

通过为第二个标签提供最大宽度来尝试解决方案。现在,它随机工作或不工作。我根本不懂。

enter image description here

2 个答案:

答案 0 :(得分:10)

就像其他人所说的那样,你需要将左边标签到右边标签的尾随约束设置为大于或等于,这样两者之间的间距至少 20

但是,您还需要先指定哪个标签截断。如果不这样做,iOS将自行选择,这可能是您当前解决方案仅在某些时候工作的原因。这是内容压缩阻力优先级发挥作用的地方。为要首先截断的标签设置较低的值。

您可以在尺寸检查员下的故事板上执行此操作。

Content Compression Resistance Priority

我假设您希望首先截断左侧标签。在这种情况下,请确保左侧标签的水平内容抗压强度优先于右侧标签。请注意上面我刚刚将它删除到749,因为默认值是750。

查看this answer,了解有关内容压缩和内容拥抱的详细信息。

答案 1 :(得分:0)

如果你右边的第二个标签有固定宽度或最大宽度:)这里你可以做到:)

  1. 将左标签和右标签之间的距离设置为&gt; = 20
  2. 使用[yourvalue]或[&gt; =您的值]
  3. 将右侧标签的宽度设置为某个值

    总的来说,标签的约束应该如何出现

    |-(distance_to_left_Label)-[left-label]-(>=20)-[right_lable(your_value)]-(distance_to_right)-|
    

    希望我的回答有所帮助:)

相关问题