如何使用自动布局在 iOS 中根据文本长度更改 UILabel 宽度

Posted

技术标签:

【中文标题】如何使用自动布局在 iOS 中根据文本长度更改 UILabel 宽度【英文标题】:How to change UILabel width based on text length in iOS Using Auto-Layouts 【发布时间】:2016-06-14 04:18:17 【问题描述】:

我想显示两个UILabel's,但是UILabel's 具有可变文本长度根据 textsize UIlabel's 宽度需要增加使用自动布局。

为此,我在下面为UIlabel's 写了自动布局

第一个标签:

1)leading Space 
2)Top space
3)Width
4)height
5)Horizontal spacing

第二个标签:

1)Trailing space
2)Top space
3)Width
4)height

我们怎样才能做到这一点?

请帮帮我。

我的代码:

textLabel1.numberOfLines = 0
        textLabel1 .sizeToFit()
        textLabel1.text = "asdfdsfdghjgjhkhkjlhjkhjk"

textLabel2.numberOfLines = 0
        textLabel2 .sizeToFit()
        textLabel2.text = "asdfdsfdghjgjhkhkjlhjkhjk"

【问题讨论】:

如果您只需要uilabel 扩展宽度? 是基于文本大小需要扩展 你能看到你的设计XIB或故事板吗? 我正在使用故事板 【参考方案1】:

选择First UILabel,设置Leading、Top、bottom并设置固定宽度,然后进入size Inspector -> 选择fixed width constraints -> 关系 -> 选择大于或等于,示例如下,

选择第二个UILabel,设置Leading、Bottom、固定宽度,然后上面同样的流程要执行,

希望对你有帮助

【讨论】:

大于或等于表示如果您的标签宽度为 42,如果您设置大于或等于根据您的文本扩展全屏宽度,其范围较大宽度 >= 42,但其固定为 42 和仅以上。 小于或等于意味着如果您的标签宽度为 240 并且是固定的,如果您设置小于或等于,则 240 是最大值但您的文本很小,它会根据您的自动更改宽度大小文本。如果您的文本高于 240 则其不可见全文, 小于或等于的例子是聊天应用,Whats App,任何聊天检查它。好的,您了解上述限制是否有效 嗨,我有一个小甜甜圈吗? 告诉我你的甜头是什么?【参考方案2】:

首先您需要将UILabel 的属性numberOfLines 设置为零并将文本换行设置为自动换行。然后给出所需的约束。

如果你没有得到想要的结果,那么你需要通过boundingRectWithSize:...方法计算标签的动态高度,并相应地给出高度约束。

【讨论】:

以上是关于如何使用自动布局在 iOS 中根据文本长度更改 UILabel 宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何根据标签文本快速更改表格视图单元格高度?

如何在 ios 中使用自动布局更改滚动视图内容大小

如何使用自动布局调整 UILabel 宽度以适合文本?

iOS 计算UILabel 文本高度问题

如何根据ios中的方向更改图像位置?

SwiftUI 4.0 (iOS 16) 新ViewThatFits视图使用简介