UILabel - 缩小文本而不是截断尾部

时间:2012-11-27 23:41:17

标签: ios uilabel

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

我已经尝试将行数设置为7和0.无论哪种方式,文本只填充默认大小(14)的7行并截断尾部。如何让文本缩小到12px以便我可以看到更多文本?

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

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

4 个答案:

答案 0 :(得分:5)

检查

sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:

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

了解更多详情check apple documentation for NSStringNSString还有一些其他方便的方法。

<强>更新 根据您的编辑,解决您的问题是设置以下属性

label.adjustsFontSizeToFitWidth = YES;

答案 1 :(得分:4)

您可以使用.adjustsFontSizeToFitWidth=YES这将调整字体大小以适应标签的宽度。例如,如果您的标签带有numberOfLines=2且文字太长,则标签的字体大小将缩小以适合所有文字。

答案 2 :(得分:1)

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

答案 3 :(得分: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"

enter image description here enter image description here

请记住,使用此方法,即使以最小字体大小显示的文字太多,最终也会使尾部省略。