質問

Quartzコンテキストを使用してテキストを表示しようとしましたが、何を試してもテキストを表示することができなかっただけです(他のあらゆる種類のQuartzオブジェクトを表示できますが、 )。誰が私が間違っているのか知っていますか?

例:

-(void)drawRect:(CGRect)rect
{   
  // Drawing code
  CGContextRef  context = UIGraphicsGetCurrentContext();
  CGContextSelectFont(context, "Arial", 24, kCGEncodingFontSpecific);
  CGContextSetTextPosition(context,80,80);
  CGContextShowText(context, "hello", 6);
  //not even this works
  CGContextShowTextAtPoint(context, 1,1, "hello", 6);
}    
役に立ちましたか?

解決

これは私が使用しているコードの断片です。

UIColor *mainTextColor = [UIColor whiteColor];
[mainTextColor set];
drawTextLjust(@"Sample Text", 8, 50, 185, 18, 16);

そして:

static void drawTextLjust(NSString* text, CGFloat y, CGFloat left, CGFloat right,
                          int maxFontSize, int minFontSize) {
    CGPoint point = CGPointMake(left, y);
    UIFont *font = [UIFont systemFontOfSize:maxFontSize];
    [text drawAtPoint:point forWidth:right - left withFont:font
       minFontSize:minFontSize actualFontSize:NULL
       lineBreakMode:UILineBreakModeTailTruncation
       baselineAdjustment:UIBaselineAdjustmentAlignBaselines];
}

他のヒント

OK、わかりました。まず、エンコードモードをkCGEncodingMacRomanに変更します。次に、その下に次の行を挿入します。

CGContextSetTextMatrix(canvas, CGAffineTransformMake(1, 0, 0, -1, 0, 0));

これにより、テキストが正しく描画されるようにテキストの変換マトリックスが設定されます。その行を入れないと、テキストは上下逆になり、前から後ろになります。これがデフォルトではなかった理由はわかりません。最後に、正しい塗りつぶしの色を設定したことを確認してください。背景色からテキストの色に変更するのを忘れて、白地に白のテキストができてしまう場合は、間違いを犯しやすいです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top