Нарисуйте простой текст в MKPolygonView - PullRequest
2 голосов
/ 12 ноября 2010

Здравствуйте, я пытаюсь нарисовать текст в MKPolygonView. Я сделал подкласс MKPolygonView и добавил его в свой MKMapView. Полигон отображается правильно, но я не вижу текст. Кто-нибудь может мне помочь?

-(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];
}

Ответы [ 2 ]

0 голосов
/ 12 ноября 2010

Я думаю, что вы сможете использовать рисунок UIKit, поместив контекст в стек графического контекста интерфейса пользователя, а затем вытолкнув его, например, так:

UIGraphicsPushContext(context);
[[UIColor redColor] set];
[t drawInRect:...];
etc, etc.
UIGraphicsPopContext();
0 голосов
/ 12 ноября 2010

Я вполне уверен, что вам нужно использовать CoreGraphics для любого вида рисования в переопределении drawMapRect. Приведенный ниже код не был скомпилирован, поэтому я не могу гарантировать, что он будет работать «из коробки», но что-то в этом роде, вероятно, сработает.

-(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]);
}
...