核心文本 - 从NSRange获取像素坐标

Jos*_*hua 7 iphone objective-c core-text

如何CGRectNSRange使用Core Text呈现的文本中获取?

我正在使用Core Text NSAttributedString.

Sea*_*ean 9

这是一种绝对的痛苦,但可以做到.

您需要使用框架中的所有线条CTFrameGetLines(),检查它们的字符范围是否在您正在寻找的范围内CTLineGetStringRange(),用于CTLineGetTypographicBounds()查找线条本身将呈现的大小,并用于CTLineGetOffsetForStringIndex()确定线条的实际位置.范围的开始/结束字符(如果该行只是所需范围的子范围).

结合所有这些并添加偏移和高度等可以得到你想要的.请注意,CTLineGetImageBounds()如果没有图形上下文(并且从我收集的内容,它仍然非常昂贵)并不起作用,并且没有必要解决此问题.