【问题标题】:Multiple CTLine's for NSRangeNSRange 的多个 CTLine
【发布时间】:2012-03-13 19:24:41
【问题描述】:
我是核心文本的新手。有没有办法找出 NSAttributedString 中的某个 NSRange 字符是否在多行(CTLine)上?
我正在做的是设置 NSAttributedString,然后使用该字符串创建框架设置器。字符串可以有不同的长度,我想知道如何查找一个范围(即一个短语)是否在多行上。因为它是一个可变长度的字符串,如果可以的话,我宁愿不设置每一行。
谢谢!
【问题讨论】:
标签:
iphone
ios
core-text
nsattributedstring
【解决方案1】:
所以你需要使用以下函数来获取该行的:
一旦你从 framesetter 获得 CTFrameRef,你需要调用:
CFArrayRef lines = CTFrameGetLines (frame);
然后看看有多少行,数一下数组中的行数:
CFIndex numLines = CFArrayGetCount(lines);
如果您需要知道一行(在本例中为第 0 行)中字符的确切范围(来自原始字符串),请使用:
CFRange range = CTLineGetStringRange(CFArrayGetValueAtIndex( lines, 0));