gpt4 book ai didi

iPhone 核心文本 : Find the pixel coordinates of a substring

转载 作者:行者123 更新时间:2023-12-03 18:30:29 25 4
gpt4 key购买 nike

这是 Twitter 应用程序的屏幕截图供引用:http://screencast.com/t/YmFmYmI4M

我想要做的是将 float 弹出窗口放置在可以跨越多行的 NSAttributedString 中的子字符串顶部。 NSAttributedString 是该项目的要求。

在提供的屏幕截图中,您可以看到链接是背景突出显示的,因此这让我相信它们正在使用 CoreText 和 NSAttributedStrings。我还发现了一个名为 CTRunRef ( http://developer.apple.com/library/ios/#documentation/Carbon/Reference/CTRunRef/Reference/reference.html ) 的东西,它看起来很有前途,但我在概念上无法将它们组合在一起。

简而言之,如果我在核心文本中有一个段落,当我点击一个单词时,如何找到该单词的边界框?

最佳答案

在属性字符串中设置一些属性,这些属性不会影响显示,但会导致其布局为单独的字形运行,然后使用 CoreText 布局字符串

CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(attrString);
CTFrameRef ctframe = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL);

现在您必须在框架中寻找相关的文本 block 。使用 CTFrameGetLines() 获取 CTLineRef 数组。

迭代数组,通过检查触摸是否位于 CTLineGetImageBounds() 返回的矩形内来测试触摸是否在该行上。如果是,现在查看该行中的字形。

同样,您可以使用 CTLineGetGlyphRuns() 获取 CTRunRef 数组。使用 CTRunGetImageBounds() 检查点击是否在字形运行内,如果是,您可以使用 CTRunGetStringIndices() 找到字形运行对应的原始属性字符串中的索引范围)

关于iPhone 核心文本 : Find the pixel coordinates of a substring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3796148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com