2012-04-05 8 views
6

Chciałbym wyświetlić tekst z innym kolorem w jego obramowaniu (konspekt). Próbuję wyświetlić tekst w MapOverlayView użyciuJak mogę zarysować czcionkę tekstu?

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

to działa dobrze z wyjątkiem muszę tekst wyświetlany kontury.

Odpowiedz

8

Tak, można wyświetlić zakreślony tekst za pomocą CGContextSetDrawingMode(CGContextRef, CGTextDrawingMode), chociaż prawdopodobnie będziesz musiał dostosować niektóre liczby i kolory, aby wyglądały dobrze.

Wydaje się logiczne, że można użyć kCGTextFillStroke, ale może to spowodować, że obrys przytłoczy wypełnienie. Jeśli wykonasz obrys, a następnie wypełnisz, jak w poniższym bloku, otrzymasz widoczny zarys za czytelnym tekstem.

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]; 
+0

Wielkie dzięki ... działało świetnie !! – user836026

+2

nie działa w moim przypadku postępowałem zgodnie z tymi samymi krokami –

0

Przyjęte rozwiązanie nie działa dla mnie prawdopodobnie dlatego drawAtPoint:withFont: jest przestarzała. Udało mi się uruchomić go pod następującym kodem:

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGFloat fontSize = 18.0; 
CGPoint point = CGPointMake(0, 0); 

UIFont *font = [UIFont fontWithName:@"Arial-BoldMT" size:fontSize]; 
UIColor *outline = [UIColor whiteColor]; 
UIColor *fill = [UIColor blackColor]; 

NSDictionary *labelAttr = @{NSForegroundColorAttributeName:outline, NSFontAttributeName:font}; 

CGContextSetTextDrawingMode(context, kCGTextStroke); 
CGContextSetLineWidth(context, 2.0); 
[text drawAtPoint:point withAttributes:labelAttr]; 

CGContextSetTextDrawingMode(context, kCGTextFill); 
CGContextSetLineWidth(context, 2.0); 
labelAttr = @{NSForegroundColorAttributeName:fill, NSFontAttributeName:font}; 
[text drawAtPoint:point withAttributes:labelAttr]; 
Powiązane problemy