0

テキストのブロックをストロークで描画しようとしています。そのため、少し検索して実験する方法は、UIView をサブクラス化し、drawRect でストロークを使用してテキストを描画することのようです。描画コードは以下です。

私が設定した方法では、UITextView を使用してインタラクティブに必要なテキストを入力します。次に、テキストがストロークで描画された UIView サブクラスの広告に渡されます。

これは完璧に機能しているようです。唯一の問題は、リターン キーが押されたとき (新しい行の作成)、または UITextView に対して幅が広すぎるために行が折り返されたときです。この情報は渡されないため、描画された (ストロークされた) テキストに新しい行はありません。 UIView サブクラスで。

何か助けはありますか?

描画コード (theText は UITextView のテキストを渡すプロパティであることに注意してください):

    UIFont *font =  [UIFont fontWithName:@"Arial" size:fontSize];
    CGPoint point = CGPointMake(0,0);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0);
    CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0);
    CGContextSetLineWidth(context, 4.0);
    CGContextSetTextDrawingMode(context, kCGTextFillStroke);
    CGContextSaveGState(context);
    [theText drawAtPoint:point withFont:font];
    CGContextRestoreGState(context);
4

1 に答える 1

0

uitextview のラッピング ロジックを複製する必要があります。部分文字列に必要な長さを文字列に尋ね、長くなりすぎてラップに収まらない場合。

また、属性付きテキストをレンダリングできるクラスである DTCoreText も確認できます。ただし、テキストビューを模倣し、テキスト入力をサポートするバージョンには、多少の費用がかかります。テキストビューの複製には時間がかかるため、最終的にはそのコストに見合うだけの価値があるかもしれません。

于 2012-09-01T11:12:05.173 に答える