0
  • Given an index for current character, how can I determine the number of line that the selected character is at?

  • Given a CTLine how can I determine the number of characters in it?

aryaxt
  • 76,198
  • 92
  • 293
  • 442

1 Answers1

1

For the first one:

int currentCharacterIndex = 12; // You define this.
CFArrayRef lines = CTFrameGetLines(frame);
int currentLine = 0;
for (CTLineRef line in lines) {
    currentLine++;
    CFRange range = CTLineGetStringRange(line);
    if (currentCharacterIndex > range.location)
        break;
}
// Current line is now the line that the currentCharacterIndex resides at

For the second one:

CFRange range = CTLineGetStringRange(line);
CFIndex length = range.length; // Number of characters

Can't be sure these work as I haven't tested them but it's worth a go.

Joshua
  • 15,200
  • 21
  • 100
  • 172