2

我一直在使用sizeWithAttributes以获得widthheight绘制所需的NSAttributedString. 这很好地得到了,width因为返回的宽度值非常贴合字符 - 它是从第一个字符到最后一个字符计算的,没有添加任何额外的填充。但是对于height,它返回的值比我想要的要大。这是因为它必须计算height从最高字母的顶部开始并向下延伸到最低字符的底部 - 例如 g 字符延伸到基线以下。

我不相信这个 API 是“智能的”,因为我的字符串中没有一个字符延伸到基线以下,但是返回的高度太高了。它似乎正在考虑可以使用这些属性显示的任何可能的字符。

我需要一种方法来减去字符串下方的“额外填充”量。我想计算基线相对于 的位置height,或者以其他方式计算有多少空间专用于基线下方的区域。下面的插图直观地解释了我认为正在发生的事情,尽管填充量有点极端。

-------------

--greetings--
              <-get rid of this 'extra' padding
-------------

我相信boundingRectWithSize:options:context:会给我相同的尺寸,而且我不知道有任何其他(非弃用)API 可以计算字符串大小。

4

1 回答 1

2

UIFont具有属性ascender(基线以上的高度)和descender(负数,基线以下的高度)。这可能是您正在寻找的。

于 2014-10-06T06:15:33.707 回答