允许UILabel使用自动布局动态增长

时间:2014-04-24 11:15:01

标签: ios uilabel autolayout

我有一个标签,其中包含一个很大的描述。我希望标签继续在新线上增长。在图像中,标签以event_venue ..... enter image description here

开头

even_venue ..标签现在有3个约束:

  1. 使用eventt_title的垂直空间
  2. 以超级视图为主导的水平空间
  3. 宽度约束,定义标签宽度始终小于superview.width。
  4. 我想要实现的是使event_venue.width小于superview.width,但如果它有更多文本,它应该以新行显示。这是否可以使用autolayout?

5 个答案:

答案 0 :(得分:4)

是的,这完全是可能的。我在这里看到的答案接近解决方案但不完整。这是一个在Storyboard中使用自动布局的解决方案,没有sizeToFit或任何编码。您修改的步骤将是:

  1. 使用eventt_title的垂直空间
  2. 具有superview前导的水平空间
  3. 带有superview尾部的水平空间
  4. 将UILabel的换行符设为Word Wrap。
  5. 将UILabel的line属性设置为0。

答案 1 :(得分:1)

我已经解决了类似的问题。我必须制作一个具有可变文本量的标签。这就是我的所作所为:

  • 在故事板中,将标签与原点放在您想要的位置。
  • 在属性检查器中,"标签"部分,设置换行符=自动换行
  • 使用随机占位符文本填充标签,使其达到所需的最大形状。例如,如果您想要填充整个宽度并且最多可以容纳三行文本,则可以执行以下操作:
    ABCDEFGHIJKLMNOPQRSTU
    ABCDEFGHIJKLMNOPQRSTU
    ABCDEFGHIJKLMNOPQRSTU

  • 在代码中,使用setText设置标签的文本:
    [self.myLabel setText:@" MyLabelText"];

这对我有用。你的情况可能有点不同,因为我没有改变超视图的宽度,听起来你可能就是这样。但是如果在标签上设置了宽度约束,那么我希望这也适用于您的情况。

答案 2 :(得分:1)

我有一个关于标签大小调整的类似问题,我发现对我有用的答案是:UILabel Auto Size Label to Fit Text。对于如何以编程方式调整标签大小的代码,这是一个很好的起始源。

我建议你还要从标签到superview的边缘添加一个水平拖尾自动布局约束。这样做,然后您可以摆脱当前的宽度约束。

答案 3 :(得分:1)

这是可以创建可扩展UILabel的可能步骤

  1. 设置UILabel固定其位置的布局
  2. 设置行数= 0
  3. 将内容的垂直压缩阻力设置为1000(这将允许文本推标签)
  4. 由于您希望UILabel展开,因此无法为其赋予固定高度限制或它的父级固定高度限制。有时需要根据条件给出高度限制以避免误差,然后需要将其优先级设置为低于垂直压缩阻力

答案 4 :(得分:0)

AutoLayout方便您进行定位。我认为它不会给你自动扩展。您必须完全定义标签with宽度和height,否则您将在标签末尾看到点。因此,您可以使用UITextView在屏幕上展开它。并设置textView.backgroundcolot = clearColor