Я выполняю некоторые операции рисования CG в CGContext, который я создал для MKMapOverlayView. После рисования в своем контексте я создаю изображение и вставляю его в контекст, предоставленный MapKit.
- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context {
CGColorSpaceRef colorRef = CGColorSpaceCreateDeviceRGB();
CGContextRef myContext = CGBitmapContextCreate(NULL, kTileSize, kTileSize, 8, 0, colorRef, kCGImageAlphaPremultipliedLast);
CGColorSpaceRelease(colorRef);
CGContextSetAllowsAntialiasing(myContext, TRUE);
//...cut out drawing operations...
CGImageRef image = CGBitmapContextCreateImage(myContext);
CGContextDrawImage(context, [self rectForMapRect:mapRect], image);
CGImageRelease(image);
CGContextRelease(myContext);
}
Есть ли способ просто скопировать myContext
в контекст
без необходимости создавать image?
Я понимаю, что некоторые из вас скажут: «Почему бы просто не рисовать прямо в контексте, который предоставляет MapKit». К сожалению, при рендеринге в контекст
напрямую возникает сбой при рисовании. Apple в настоящее время изучает эту проблему для нас, но пока что нам нужно найти обходной путь. Этот обходной путь, который я представил выше, - мой "лучший" вариант, но он немного медленный.
P.S. Я начал награждение, так как я тоже ищу ответ здесь. В частности, я нацелен на OS X. Так что ответ должен работать там. ОП искал ответ на iOS.