3

リッチ テキスト エディターにコア テキストを使用しています。ユーザーがテキストの配置を変更できるようにします。

ユーザーが 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);
}
4

1 に答える 1

2

現在の「挿入属性」、つまり、ユーザーが入力するテキストに適用する属性を追跡する必要があります。太字、斜体などについても同様です。基本的に、現在のカーソル位置の前にある属性を見て、それらの属性を新しいテキストに適用する必要があります。

于 2011-08-07T05:08:14.283 に答える