3

UIViewにテキストを描画する必要があるシナリオがあります。私のコードは

- (void)drawRect:(CGRect)iRect {
    [super drawRect:iRect];
    CGContextRef aContext = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(aContext, [[UIColor greenColor] CGColor]);
    [@"s" drawInRect:CGRectMake(0, 0, iRect.size.width, iRect.size.height) withFont:[UIFont systemFontOfSize:500] lineBreakMode:NSLineBreakByCharWrapping alignment:NSTextAlignmentCenter];
  }

このコードで私は達成することができます:

ここに画像の説明を入力してください

ただし、FontSize 500を使用しているため、テキストのlineWidthが大きくなります。lineWidthを1pxに減らしたいのですが。

これを達成する方法についてアドバイスしてください。

  • 従来とは別の方法はありますかdrawInRect
  • CoreTextは解決策を得るのに役立ちますか

ありがとう。

編集

グリフにUIBezierPathを使用して、キャラクターのパスを取得することができました。しかし、達成される道はキャラクターの境界を通ります。したがって、テキストは次のようになります。

ここに画像の説明を入力してください

これを1行にすることはできますか?

4

1 に答える 1

2

文字Sが一定の幅の線で描かれているように見えますが、そうではありません。よく見ると、線幅が変化していることがわかります。実際には、そのアウトラインによって定義される複雑なグラフィカル構造です。セリフ付きのフォントを使用すると、さらにわかりやすくなります。結果として、テキストの行幅などはありません。

おそらく最善の解決策は、細いペンを使用して描かれたように見える別のフォントを使用することです。そのようなフォントがiOSにプリインストールされているかどうかはわかりません。

于 2012-12-07T09:37:05.610 に答える