iphone - NSRange 的多个 CTLine

标签 iphone ios core-text nsattributedstring

我是核心文本新手。有没有办法找出 NSAttributedString 中的某个 NSRange 字符是否在多行上(CTLine)?

我正在做的是设置 NSAttributedString,然后使用该字符串创建框架 setter 。字符串的长度可以不同,我想知道如何查找范围(即短语)是否在多行上。因为它是一个不同长度的字符串,所以如果可以的话,我宁愿不设置每一行。

谢谢!

最佳答案

因此,您需要使用以下函数来获取该行的:

从框架 setter 获取 CTFrameRef 后,您需要调用:

CFArrayRef lines = CTFrameGetLines (frame);

然后要查看有多少行,请计算数组中的行数:

CFIndex numLines = CFArrayGetCount(lines);

如果您需要知道一行(本例中为第 0 行)中字符的确切范围(来自原始字符串),请使用:

CFRange range = CTLineGetStringRange(CFArrayGetValueAtIndex( lines, 0));

关于iphone - NSRange 的多个 CTLine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9690662/

相关文章:

iOS - 是否可以缓存分块的 HTTP 响应?

iphone - CTFrameGetLineOrigins的来源不正确

iphone - 将 CATextLayer 与 CGContext 一起使用

iphone - 当UIView变为LandscapeOrientation时如何隐藏顶部的UITabbar和UINavigationBar?

iphone - iOS UITabBar : Remove top shadow gradient line

iphone - 当 View Controller 加载时强制我的 View Controller 横向显示

android - 将本地存储从 Cordova 应用迁移到 Android 应用

ios - UITextView 具有大量 Markdown 支持

iphone - 有没有办法在使用 AVPlayer 进行 HTTP 实时音频流时选择比特率?

iphone - iOS如何本地化模块中的文件