Я использую основной текст для редактора форматированного текста.
Я разрешаю пользователям изменять выравнивание текста.
Итак, скажем, пользователь вводит 3 слова, а затем выбирает правильную кнопку выравнивания. После нажатия кнопки я создаю CTParagraphStyle с textAlignment, установленным вправо, и я установил свой attribuString для этого диапазона, чтобы он содержал этот стиль абзаца.
Проблема в том, что когда пользователь печатает, а CoreText начинает рисовать на следующей строке, выравнивание автоматически возвращается к левому выравниванию.
Какое правильное решение расширить этот стиль абзаца до остальных строк в текущем абзаце (когда пользователь печатает и перерисовывает основной текст)?
NSArray *lines = (NSArray*)CTFrameGetLines(_frame);
NSInteger count = [lines count];
CGPoint *origins = (CGPoint*)malloc(count * sizeof(CGPoint));
CTFrameGetLineOrigins(_frame, CFRangeMake(0, count), origins);
CGContextRef ctx = UIGraphicsGetCurrentContext();
for (int i = 0; i < count; i++) {
CTLineRef line = (CTLineRef)CFArrayGetValueAtIndex((CFArrayRef)lines, i);
CGContextSetTextPosition(ctx, frameRect.origin.x + origins[i].x, frameRect.origin.y + origins[i].y);
CTLineDraw(line, ctx);
}