我有一个UILabel集,其字体为系统粗体14.0,最小字体为12。我希望标签填充7行,如果标签太大,则将文本缩小到12像素,在这种情况下,它可能超过7行,但仍适合其原始框架。
我已经尝试将行数设置为7和0。无论哪种方式,文本都将以默认大小(14)填充7行并截尾。如何使文字缩小到12px,以便可以看到更多文字?
((我会发布更多代码,但是大多数代码都在IB中设置)。
编辑:我将“自动收缩”选项设置为“最小字体大小”,其大小为12。即使将其设置为明显的值(如8),也不会发生收缩。
检查与
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
还有其他一些便捷方法。
更新:根据您的修改,解决您的问题的方法是设置以下属性,
NSString
您可以使用label.adjustsFontSizeToFitWidth = YES;
,这将调整字体大小以适合标签的宽度。例如,如果您有一个带有.adjustsFontSizeToFitWidth=YES
的标签并且文本太长,则标签的字体大小将减小以适合所有文本。
因此,显然自动收缩,最小字体大小等仅在1行UILabel中起作用。我找到了一个解决方案numberOfLines=2
,但是如果您可以在IB或UILabel API中进行处理,那就很好了。
对于仍在寻找的任何人,除非here,否则字体大小似乎不会缩放。我猜UILabel在尝试截断之前不知道需要调整文本的大小。
为了获得所需的效果,请使用以下命令(使用您希望的字体大小和行数):
lineBreak = "Truncate Tail"
Font Size: 14
Lines: 2
Automatically Adjusts Font Size: true
Auto Shrink: "Minimum font size"
Minimum Font Size: 8
Line Break: "Truncate Tail"
请记住,即使最小字体大小,如果视图中的文本过多,最终将使尾部省略。