Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 核心文本-从NSRange获取像素坐标_Iphone_Objective C_Core Text - Fatal编程技术网

Iphone 核心文本-从NSRange获取像素坐标

Iphone 核心文本-从NSRange获取像素坐标,iphone,objective-c,core-text,Iphone,Objective C,Core Text,对于使用核心文本呈现的文本,如何从NSRange获取CGRect 我将核心文本与nsattributed字符串一起使用首先确定您感兴趣的范围所在的行。然后调用CTLineGetOffsetForStringIndex(),以获取特定字符串位置距行首的偏移量。与CTLineGetImageBounds()一起,应该可以计算范围中第一个和最后一个字符的CGPoint位置。这绝对是一件痛苦的事情,但可以做到 您需要使用CTFrameGetLines()获取帧中的所有行,使用CTLineGetStrin

对于使用核心文本呈现的文本,如何从
NSRange
获取
CGRect


我将核心文本与
nsattributed字符串一起使用

首先确定您感兴趣的范围所在的行。然后调用
CTLineGetOffsetForStringIndex()
,以获取特定字符串位置距行首的偏移量。与
CTLineGetImageBounds()
一起,应该可以计算范围中第一个和最后一个字符的
CGPoint
位置。

这绝对是一件痛苦的事情,但可以做到

您需要使用
CTFrameGetLines()
获取帧中的所有行,使用
CTLineGetStringRange()
检查它们的字符范围是否在您要查找的范围内,使用
ctlinegettyprographicfounds()
查找行本身渲染为的大小,并使用
CTLineGetOffsetForStringIndex()
确定范围的开始/结束字符的实际位置(如果该行只是所需范围的子范围)


将所有这些结合起来,再加上偏移量和高度,就可以得到你想要的。请注意,
CTLineGetImageBounds()
如果没有图形上下文就无法工作(据我所知,这是非常昂贵的),因此不需要解决此问题。

详细的答案,非常感谢!找到像这样的东西所需的所有功能总是一件痛苦的事。:)@Joshua你能在实现这个答案时分享你的代码吗??我想我遇到了一些问题,需要3周才能解决,请帮帮我…@Risma我从来没有真正抽出时间来实现这个,但你需要的一切都在Sean的答案中。我正在尝试解决这个问题,我在某一点上挂断了-我似乎无法为文本获得CTLineRef的“字符串访问权”。有什么想法吗?这是我的代码:@bryanjclark你有没有找到解决这个问题的方法,我正在为类似的问题而挣扎