UILabel-缩小文本而不是截尾巴

问题描述 投票:5回答:4

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

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

((我会发布更多代码,但是大多数代码都在IB中设置)。

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

ios uilabel
4个回答
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还有其他一些便捷方法。

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

NSString

4
投票

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


0
投票

因此,显然自动收缩,最小字体大小等仅在1行UILabel中起作用。我找到了一个解决方案numberOfLines=2,但是如果您可以在IB或UILabel API中进行处理,那就很好了。


0
投票

对于仍在寻找的任何人,除非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" enter image description here

请记住,即使最小字体大小,如果视图中的文本过多,最终将使尾部省略。

© www.soinside.com 2019 - 2024. All rights reserved.