我只想使用UILabel attributedText属性在NSAttributedString中做首字下沉字符。像这样:
ios - 带有NSAttributedString的首字下沉-LMLPHP
(来源:interpretationbydesign.com)
我已经尝试过将第一个字符的范围的基线调整为负值,并且它可以使第一个字符的顶部与其余第一行的顶部对齐。但是我还没有找到任何方法使其他行流到首字下沉字符的右侧。
可以使用NSAttributedString only解决此问题,还是我必须拆分字符串并使用Core Text自己渲染?

最佳答案

CoreText无法执行首字下沉操作,因为它由由字形运行组成的行组成。首字下沉将覆盖不支持的多行。

要实现此效果,您将必须分别绘制笔帽,然后在其周围的路径中绘制其余文本。

长话短说:在UILabel中不可能,可能,但是CoreText可以做很多工作。

使用CoreText的步骤如下:

  • 为单个字符创建一个排字机。
  • 突围
  • 创建一条路径,以节省首字下限
  • 的框架
  • 使用此路径
  • 为其余字符创建框架 setter
  • 绘制第一个字形
  • 绘制其余
  • 关于ios - 带有NSAttributedString的首字下沉,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14214900/

    10-11 19:48