Несколько CTLine для NSRange

Я новичок в основном тексте. Есть ли способ узнать, находится ли определенный NSRange символов в NSAttributedString на нескольких строках (CTLine)?

Что я делаю, так это устанавливаю NSAttributedString, а затем создаю фреймсеттер с этой строкой. Строка может быть разной длины, и мне интересно, как определить, находится ли диапазон (т.е. фраза) в нескольких строках. Поскольку это строка переменной длины, я бы предпочел не устанавливать каждую отдельную строку, если могу.

Спасибо!


person Matt W.    schedule 13.03.2012    source источник


Ответы (1)


Итак, вам нужно использовать следующие функции, чтобы получить строку:

Как только вы получите CTFrameRef от фреймсеттера, вам нужно вызвать:

CFArrayRef lines = CTFrameGetLines (frame);

затем, чтобы увидеть, сколько строк есть, подсчитайте строки в массиве:

CFIndex numLines = CFArrayGetCount(lines);

Если вам нужно узнать точный диапазон символов (из исходной строки) в строке (в данном случае это строка 0), используйте:

CFRange range = CTLineGetStringRange(CFArrayGetValueAtIndex( lines, 0));
person lnafziger    schedule 14.03.2012