Цель C - Основной текст Найти индекс в позиции? - PullRequest
1 голос
/ 26 июля 2011

Я пытаюсь получить индекс ближайшего символа к точке.

Приведенный ниже код прекрасно работает, так как мой текст выравнивается по левому краю, как только я перемещаю его вправо или по центру, это дает мне неправильный индекс. Каково было бы решение рассмотреть выравнивание текста при получении ближайшего индекса к точке?

CTLineRef line = (CTLineRef)[lines objectAtIndex:i];
index = CTLineGetStringIndexForPosition(line, point);  

EDIT:

Мое выравнивание текста выполняется путем добавления стиля абзаца с настройкой textAlignment к kCTCenterTextAlignment

1 Ответ

4 голосов
/ 26 июля 2011

Точка относится к началу линии (которая изменяется при выравнивании), поэтому вы должны использовать CTFrameGetLineOrigins и добавить значение x начала координат линии к значению x вашей точки.

...