【问题标题】:Allow UILabel to grow dynamically using auto layout允许 UILabel 使用自动布局动态增长
【发布时间】:2014-06-09 15:28:14
【问题描述】:

我有一个标签,它将包含一个重要的描述。我希望标签继续在新的线路上增长。在图片中,它的标签以 event_venue 开头.....

even_venue.. 标签目前有 3 个约束:

  1. 带有 eventt_title 的垂直空间
  2. 以superview为首的水平空间
  3. 定义标签宽度始终小于 superview.width 的宽度约束。

我想要实现的是让 event_venue.width 小于 superview.width,但是如果它有更多的文本,它应该以新行显示。这可以使用自动布局吗?

【问题讨论】:

  • 当然可以,但我实际上会使用UITextVieweditable = NO;
  • 只需要将行数设置为零即可。

标签: ios uilabel autolayout


【解决方案1】:

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

  1. 为 UILabel 设置布局以固定其位置
  2. 设置行数 = 0
  3. 将内容垂直压缩阻力设置为 1000(这将允许文本推送标签)
  4. 由于您希望 UILabel 扩展,您不能给它固定高度约束或其父固定高度约束。有时根据条件给出高度限制是必要的以避免错误,那么您需要将其优先级设置为低于垂直压缩阻力

【讨论】:

    【解决方案2】:

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

    1. 带有 eventt_title 的垂直空间
    2. 以父视图为首的水平空间
    3. 带有超级视图尾随的水平空间
    4. 将 UILabel 的换行符设置为自动换行。
    5. 将 UILabel 的 lines 属性设置为 0。

    【讨论】:

      【解决方案3】:

      我已经解决了一个类似的问题。我必须制作一个包含可变数量文本的标签。这是我所做的:

      • 在情节提要中,将带有原点的标签放置在您想要的位置。
      • 在属性检查器的“标签”部分中,设置换行符 = 自动换行
      • 使用随机占位符文本将标签填充到所需的最大形状。例如,如果您想填满整个宽度并为最多三行文本留出空间,您可以这样做:
        abcdefghijklmnopqrstu
        abcdefghijklmnopqrstu
        abcdefghijklmnopqrstu

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

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

      【讨论】:

        【解决方案4】:

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

        我建议您还添加一个从标签到超级视图边缘的水平尾随自动布局约束。这样做,您就可以摆脱当前的宽度限制。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-05-25
            • 2014-01-11
            • 2012-06-04
            • 2014-01-14
            • 2020-07-20
            • 2017-10-26
            • 1970-01-01
            相关资源
            最近更新 更多