我一直在使用sizeWithAttributes
以获得width
和height
绘制所需的NSAttributedString
. 这很好地得到了,width
因为返回的宽度值非常贴合字符 - 它是从第一个字符到最后一个字符计算的,没有添加任何额外的填充。但是对于height
,它返回的值比我想要的要大。这是因为它必须计算height
从最高字母的顶部开始并向下延伸到最低字符的底部 - 例如 g 字符延伸到基线以下。
我不相信这个 API 是“智能的”,因为我的字符串中没有一个字符延伸到基线以下,但是返回的高度太高了。它似乎正在考虑可以使用这些属性显示的任何可能的字符。
我需要一种方法来减去字符串下方的“额外填充”量。我想计算基线相对于 的位置height
,或者以其他方式计算有多少空间专用于基线下方的区域。下面的插图直观地解释了我认为正在发生的事情,尽管填充量有点极端。
-------------
--greetings--
<-get rid of this 'extra' padding
-------------
我相信boundingRectWithSize:options:context:
会给我相同的尺寸,而且我不知道有任何其他(非弃用)API 可以计算字符串大小。