确定包含特定字符的CUT行

时间:2010-07-23 09:48:00

标签: iphone ipad core-text

我正在开发一个应用程序,我在其中使用Core Text进行布局。我用CTFrameSetter来绘制文本。我在文本中插入了一个空白字符'\ ufffc'。现在我想要的是确定这个空白字符的位置,即它的x,y坐标。我找不到任何确定任何特定角色位置的功能。

我尝试使用CTLineGetOffsetForStringIndex( CTLineRef line, CFIndex charIndex, CGFloat* secondaryOffset );查找位置,但我无法完全理解此方法的工作原理。

有人能就此问题向我提供一些指示吗?

1 个答案:

答案 0 :(得分:0)

你可以循环当前CTFrameRef的所有CTLine,并且对于每个ctline,获取CTRun并检查CTRun是否属于你。简单的代码

 NSArray *lines = (NSArray*)CTFrameGetLines(workFrame);
 NSInteger count = [lines count];
 CGPoint *origins = (CGPoint*)malloc(count * sizeof(CGPoint));
 CTFrameGetLineOrigins(workFrame, CFRangeMake(0, count), origins); 

 for (int i = 0; i < lines.count; i++) {
      CTLineRef line = (CTLineRef)[lines objectAtIndex:i];
      CFRange cfRange = CTLineGetStringRange(line);//the string-range

       NSArray * runArray = (NSArray *)CTLineGetGlyphRuns(line);

        int runIndex = 0;
        for (id runObj in runArray) {
          CTRunRef run = (CTRunRef)runObj;          
          CFRange runRange = CTRunGetStringRange(run);
          CGFloat xOffset = CTLineGetOffsetForStringIndex(line, runRange.location + runRange.length, NULL);
          //checks if the crrun's text is your space
        }
   }