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