我的UILabel设置字体为系统粗体14.0,最小字体大小为12。 我希望标签填充7行,如果它太大,将文本缩小到12像素,在这种情况下,它可能超过7行,但仍然适合它的原始帧。
我已经尝试将行数设置为7和0.无论哪种方式,文本只填充默认大小(14)的7行并截断尾部。如何让文本缩小到12px以便我可以看到更多文本?
(我会发布更多代码,但其中大部分是在IB中设置的。)
编辑:我将自动收缩选项设置为“最小字体大小”,大小为12.即使我将其设置为明显的类似8,也不会发生收缩。
答案 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 NSString
。 NSString
还有一些其他方便的方法。
<强>更新强> 根据您的编辑,解决您的问题是设置以下属性
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"
请记住,使用此方法,即使以最小字体大小显示的文字太多,最终也会使尾部省略。