Objective C - 核心文本和绘图线?

时间:2011-08-07 04:00:46

标签: objective-c core-text text-alignment

我正在使用富文本编辑器的核心文本。 我允许用户更改文本对齐方式。

因此,假设用户键入3个单词,然后选择正确的对齐按钮。单击按钮后,我创建了一个设置为右侧textAlignment的CTParagraphStyle,并设置了该范围的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);
}

1 个答案:

答案 0 :(得分:2)

您需要跟踪当前的“插入属性”,即应该应用于用户输入的任何文本的属性。粗体,斜体等也是如此。基本上,您需要在当前光标位置之前查看属性,并将这些属性应用于新文本。