iPhoneでQuartzを使用してテキストを表示する方法は?
-
02-07-2019 - |
質問
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));
これにより、テキストが正しく描画されるようにテキストの変換マトリックスが設定されます。その行を入れないと、テキストは上下逆になり、前から後ろになります。これがデフォルトではなかった理由はわかりません。最後に、正しい塗りつぶしの色を設定したことを確認してください。背景色からテキストの色に変更するのを忘れて、白地に白のテキストができてしまう場合は、間違いを犯しやすいです。
所属していません StackOverflow