6

我有一个 UILabel 设置,字体为系统粗体 14.0,最小字体大小为 12。我希望标签填充 7 行,如果太大,将文本缩小到 12 像素,在这种情况下可能会更多超过 7 行,但仍然适合它的原始框架。

我尝试将行数设置为 7 和 0。无论哪种方式,文本都会以默认大小 (14) 填充 7 行并截断尾部。我怎样才能让文本缩小到 12px 以便我可以看到更多文本?

(我会发布更多代码,但其中大部分是在 IB 中设置的)。

编辑:我将 Autoshrink 选项设置为“最小字体大小”,大小为 12。即使我将其设置为明显的 8,也不会发生收缩。

4

4 回答 4

5

检查与

sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:

[labelText sizeWithFont:labelFont 
                  minFontSize:12.0 
                  actualFontSize:&returnFontSize 
                  forWidth:frame.size.width 
                  lineBreakMode:UILineBreakModeWordWrap];

有关更多详细信息,请查看 Apple 文档以获取NSString. 还有一些其他的便捷方法也可用于NSString.

更新: 根据您的编辑,解决您的问题的方法是设置以下属性,

label.adjustsFontSizeToFitWidth = YES;
于 2012-11-27T23:46:53.643 回答
4

您可以使用.adjustsFontSizeToFitWidth=YES它来调整字体大小以适合标签的宽度。例如,如果您有一个标签,numberOfLines=2并且文本太长,则标签的字体大小将减小以适合所有文本。

于 2015-02-16T11:31:42.087 回答
0

所以显然自动收缩、最小字体大小等仅适用于 1 行 UILabel。我在这里找到了一个解决方案,尽管如果你能在 IB 或 UILabel API 中处理这个问题会很好。

于 2012-11-28T00:32:08.483 回答
0

对于仍在寻找的任何人,似乎字体大小不会缩放,除非lineBreak = "Truncate Tail" 我猜 UILabel 不知道它需要调整文本大小,直到它尝试截断。

因此,要达到预期的效果,请使用以下内容(使用您希望的任何字体大小和行数):

Font Size: 14
Lines: 2
Automatically Adjusts Font Size: true
Auto Shrink: "Minimum font size"
Minimum Font Size: 8
Line Break: "Truncate Tail"

在此处输入图像描述 在此处输入图像描述

请记住,如果使用这种方法,即使在最小字体大小的情况下视图的文本太多,它最终也会使尾部椭圆化。

于 2020-02-10T16:38:14.187 回答