2013-10-19 27 views
20

说我有两个UILabels,一个是URL,另一个是定时器:使用自动布局,如何让同一“行”上的两个标签在宽度上动态变化(根据每个标签的宽度进行调整)?

[http://website.com/link/to/specific/story] [9m 42s] 

但“计时器”的UILabel变化宽了不少。有时它只是12s例如,其他时间是125h 32m 8s。有很多变化。我希望定时器UILabel占用尽可能多的宽度,因为它需要和URL标签占用其余的。这意味着如果定时器更长,URL更短等。

如何在自动布局中执行此操作?最好在Interface Builder中?

+0

固有内容大小+优先 –

回答

21

你应该设置压缩性,URL标签必须具有较低的值;

将标签之间的水平间隔设置为常量(例如零或默认值);

为每个标签设置宽度并选择“小于”或“大于”关系,这些值为视图的缩小/扩大设置限制。

+0

我在这个示例项目中缺少什么呢? http://cl.ly/43072x2A0U3P –

+0

@DougSmith在你的项目中你没有执行第2步和第3步。 – hybridcattt

+0

对不起,我按了输入键:) @DougSmith在你的项目中你没有执行第2步和第3步。 我有修改你的项目http://cl.ly/0b1Q2R1R1W1v 这是我做的:创建正确的水平约束:从超级视图到第一个标签,从第一个标签到第二个标签,从第二个标签到超级视图。这修复了“paddind”。然后我为每个标签固定宽度,并使其“大于”和“小于”,以便宽度可以改变。我为1s标签> = 100设置宽度,为2nd - 50 <=宽度<= 100设置宽度。现在完美的作品(尝试更改第二个标签的文字) – hybridcattt

8

这是耐压性变得重要的地方。由于URL标签需要先缩小(为了容纳定时器标签的空间),URL标签的压缩阻力应低于定时器标签的压缩阻力(当然,水平方向)。您可以在IB中轻松设置此属性。

+0

虽然我给了标签集宽度吗?我如何让一个人愿意超越另一个? –

+0

不,不要给他们宽度,让他们保持其内在的内容大小。 –

+0

如果我删除宽度约束,我得到的约束警告不足。这些是我对它的限制,我还有什么要做的呢? http://i.imgur.com/DIfF8S9.png –

相关问题