sizeWithFont返回的CGSize:minFontSize:actualFontSize:forWidth:lineBreakMode:始终包含相同的高度。为什么会这样,并且有办法解决这个问题吗?
我想垂直对齐一个字符串,它可能不会被截断,除非它使用最小字体大小无法放在一行上。所以我尝试使用这个方法来获得行高,但无论realFontSize是什么,它总是返回57px。
有什么想法吗?
答案 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:
实例的大小之间。
您还必须确保将此消息发送到您要呈现的字符串。例如,如果您要求的虚拟字符串长度小于所提供宽度所需的高度,您将始终获得相同的值。
如果您使用调用该方法时使用的实际代码更新您的问题,那么每个人都可以更好地为您提供帮助。