始终使用sizeWithFont得到相同的高度:minFontSize:actualFontSize:forWidth:lineBreakMode:

时间:2010-09-04 01:31:42

标签: iphone objective-c uikit nsstring

sizeWithFont返回的CGSize:minFontSize:actualFontSize:forWidth:lineBreakMode:始终包含相同的高度。为什么会这样,并且有办法解决这个问题吗?

我想垂直对齐一个字符串,它可能不会被截断,除非它使用最小字体大小无法放在一行上。所以我尝试使用这个方法来获得行高,但无论realFontSize是什么,它总是返回57px。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

actualFontSize

获得sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:

然后您可以使用以下方法计算渲染所需的高度:

CGFloat actualHeight = [font fontWithSize:actualFontSize].ascender-[font fontWithSize:actualFontSize].descender;

(我发现this页有助于理解与字体相关的各种大小值。)

答案 1 :(得分:1)

我相信你误解了actualFontSize参数。这只是一个out参数,而不是in参数。您为actualFontSize提供的价值无关紧要;如果指针是非NULL,则它将被用于确定返回大小的字体大小覆盖。返回的实际字体大小将介于minFontSize:和作为选择器的UIFont部分的参数提供的sizeWithFont:实例的大小之间。

您还必须确保将此消息发送到您要呈现的字符串。例如,如果您要求的虚拟字符串长度小于所提供宽度所需的高度,您将始终获得相同的值。

如果您使用调用该方法时使用的实际代码更新您的问题,那么每个人都可以更好地为您提供帮助。