6

境界線 (アウトライン) に別の色でテキストを表示したいと思います。を使用して MapOverlayView にテキストを表示しようとしています

[text drawAtPoint:CGPointMake(0,30) withFont:[UIFont fontWithName:@"Helvetica-Bold" size:(3 * MKRoadWidthAtZoomScale(zoomScale))] 

アウトラインを表示するテキストが必要な場合を除いて、正常に動作します。

4

2 に答える 2

9

はい、 を使用してアウトライン化されたテキストを表示できますが、CGContextSetDrawingMode(CGContextRef, CGTextDrawingMode)見栄えを良くするためにいくつかの数値と色を調整する必要があるでしょう。

kCGTextFillStroke を使用することは理にかなっているように見えますが、ストロークが塗りつぶしを圧倒する可能性があります。下のブロックのように、ストロークしてから塗りつぶすと、読み取り可能なテキストの背後に見えるアウトラインが表示されます。

CGContextRef context = UIGraphicsGetCurrentContext();

CGPoint point = CGPointMake(0,30);
CGFloat fontSize = (3 * MKRoadWidthAtZoomScale(zoomScale));
UIFont *font = [UIFont fontWithName:@"Helvetica-Bold" size:fontSize];

// Draw outlined text.
CGContextSetTextDrawingMode(context, kCGTextStroke);
// Make the thickness of the outline a function of the font size in use.
CGContextSetLineWidth(context, fontSize/18);
CGContextSetStrokeColorWithColor(context, [[UIColor redColor] CGColor]);
[text drawAtPoint:point withFont:font];

// Draw filled text.  This will make sure it's clearly readable, while leaving some outline behind it.
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetFillColorWithColor(context, [[UIColor blueColor] CGColor]);
[text drawAtPoint:point withFont:font];
于 2012-04-09T05:25:04.590 に答える