我正在使用一个富文本编辑器的核心文本。
我允许用户更改文本对齐方式。
假设用户键入3个单词,然后选择右对齐按钮。单击按钮后,我创建了一个ctparagraphstyle,将textalignment设置为right,并将该区域的attributedString设置为包含此段落样式。
问题是,当用户正在键入并开始在下一行绘制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);
}
最佳答案
您需要跟踪当前的“插入属性”,即应该应用于用户输入的任何文本的属性。粗体、斜体等也一样。基本上,您需要查看当前光标位置之前的属性,并将这些属性应用于新文本。