【问题标题】:Get string baseline position within its bounding box获取其边界框内的字符串基线位置
【发布时间】:2014-10-06 05:13:03
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: ios swift ios8 nsattributedstring cgsize


    【解决方案1】:

    UIFont 具有属性ascender(高于基线的高度)和descender(负数,低于基线的高度)。这可能就是您正在寻找的。​​p>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-10
      • 2014-06-28
      • 2012-11-02
      • 2017-07-15
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多