[英]Core Text - Get Pixel Coordinates from NSRange
我将如何得到CGRect
从NSRange
与核心文本呈现的文本?
我正在使用带有NSAttributedString
Core Text。
这是一种绝对的痛苦,但可以做到。
你需要让所有的帧使用线CTFrameGetLines()
检查他们的字符范围是你要找的使用范围CTLineGetStringRange()
使用CTLineGetTypographicBounds()
找到多大的线本身就呈现为,并使用CTLineGetOffsetForStringIndex()
来确定范围的开始/结束字符的实际位置(如果该行只是所需范围的子范围)。
结合所有这些并添加偏移和高度等可以得到你想要的。 请注意, CTLineGetImageBounds()
在没有图形上下文的情况下不起作用(而且,从我收集的内容来看,它无论如何都非常昂贵)并且不一定要解决这个问题。
首先确定您感兴趣的范围所在的线。 然后调用CTLineGetOffsetForStringIndex()
以从行的开头获取特定字符串位置的偏移量。 与CTLineGetImageBounds()
一起,应该可以计算范围中第一个和最后一个字符的CGPoint
位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.