【问题标题】: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));
    

    【讨论】:

      猜你喜欢
      • 2014-09-25
      • 1970-01-01
      • 2014-09-28
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 2018-05-30
      • 2015-01-18
      相关资源
      最近更新 更多