我一直在使用sizeWithAttributes
来获取所需的width
和height
以便绘制NSAttributedString
。这样可以很好地获得width
因为宽度返回的值非常贴合 - 它是从第一个字符到最后一个字符计算的,没有添加任何额外的填充。但是对于height
,它返回的值大于我想要的值。这是因为它必须从最高字母的顶部开始计算height
并向下延伸到最低字符的底部 - 例如g字符延伸到基线以下。
我不相信这个API是“智能的”#39;因为我的字符串中没有任何字符延伸到基线以下,但返回的高度太高。它似乎正在考虑可以用这些属性显示的任何可能的角色。
我需要一种方法来减去额外填充的数量"在字符串下面。我想计算基线相对于height
的位置,或者计算基线下面区域专用空间的其他方法。下图说明了我认为发生了什么,虽然填充量有点极端。
-------------
--greetings--
<-get rid of this 'extra' padding
-------------
我相信boundingRectWithSize:options:context:
会给我相同的维度,而且我不知道有任何其他(不推荐的)API来计算字符串大小。
答案 0 :(得分:1)
UIFont
具有属性ascender
(高于基线的高度)和descender
(负值,高度低于基线)。这可能就是你要找的东西。