UILabel自动适应大小

13

有没有自动调整 UILabel 大小的方法?假设 UILabel 的大小为 40 x 40,文本字体大小将根据字符数自动调整。

4个回答

26

您可以使用adjustFontSizeToFitWidth属性。像这样:

UILabel *myLabel = [[UILabel alloc] init];
[myLabel setAdjustsFontSizeToFitWidth:YES];

在 Interface Builder 中,标签属性界面上有一个复选框,允许你调整字体大小以适应标签。


没问题。抱歉,示例代码使用了read adjustFontSizeToWidth,但应该是adjustFontSizeToFitWidth。我已经更正了。 - Jamison Dance
在 AdjustS 中您跳过了一个字母: [myLabel setAdjustsFontSizeToFitWidth:YES]; - beryllium

0

使用自动布局设计概念,不要为UILabel设置高度约束,并将行数设置为0

自动布局会根据标签的文本自动处理标签的动态高度。如果标签只有一行文本,则它只会占用一行空间。如果标签有多行文本,则它会根据文本大小和所需显示文本的行数调整标签大小。

对于动态文本信息,请将行数设置为零,这在您的文本变化时非常有用。

编程实现(Swift 4)

var label = UILabel()
let stringValue = "iOS\nmultiline\nlabel\nin\nInterface\nbuilder"
label.text = stringValue
label.numberOfLines = 0 // Set 0, if number of lines not specified.
label.lineBreakMode = .byTruncatingTail // or .byWrappingWord
label.minimumScaleFactor = 0.8 . // It is not required but nice to have a minimum scale factor to fit text into label frame

使用 Interface Builder

enter image description here

注意:不需要设置最小字体缩放比例,但为了使文本适应标签框架,最好有一个最小比例因子。
参考资料:UILabel-行数

0

最好使用内在内容和压缩阻力优先级来调整标签的大小以适应内容。


0

没问题 :) 很抱歉我没有提供任何示例代码。此外,苹果文档非常宝贵和有用。 - lwe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接