2010-11-12 19 views
2

Bonjour J'essaie de dessiner du texte dans un MKPolygonView. J'ai fait une sous-classe de MKPolygonView et l'ai ajouté à mon MKMapView. Le polygone apparaît correctement, mais je ne peux pas voir le texte. Quelqu'un peut-il m'aider?Dessine un texte simple dans un MKPolygonView

-(void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context{ 

    [super drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context]; 

    CGRect overallCGRect = [self rectForMapRect:self.overlay.boundingMapRect]; 
    UIFont* font = [UIFont fontWithName:@"ArialRoundedMTBold" size:20.0f]; 

    NSString * t= @"Test"; 
    [[UIColor redColor] set]; 
    [t drawInRect:overallCGRect withFont:font lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentCenter]; 
} 

Répondre

0

Je suis assez certain que vous devez utiliser CoreGraphics pour tout type de dessin dans votre override drawMapRect. Le code ci-dessous n'a pas été compilé, donc je ne peux pas garantir qu'il fonctionnera hors de la boîte, mais quelque chose dans ce sens fera probablement l'affaire.

-(void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context{ 

    // The base implementation does nothing so this isn't needed 
    //[super drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context]; 

    NSString * t= @"Test" ; 
    CGPoint point = [self pointForMapPoint:mapRect.origin]; 

    CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0); 
    CGContextSelectFont (context, "Helvetica", 20.0f, kCGEncodingFontSpecific); 
    CGContextShowTextAtPoint(context, point.x, point.y, [t UTF8String], [t length]); 
} 
0

Je pense que vous serez en mesure d'utiliser le dessin UIKit par pushing the context à la pile de contexte graphique de l'interface utilisateur, puis le faire éclater après, comme ceci:

UIGraphicsPushContext(context); 
[[UIColor redColor] set]; 
[t drawInRect:...]; 
etc, etc. 
UIGraphicsPopContext();