Bazı CG çizim işlemlerini bir MKMapOverlayView için oluşturduğum bir CGContext'e gerçekleştiriyorum. Bağlamı çizdikten sonra, bir resim oluşturup MapKit'in sağladığı içeriğe yapıştırıyorum.CGContext'i başka bir CGContext'e kopyalayın
- (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);
}
bir görüntü oluşturmak zorunda kalmadan sadece context
içine myContext
kopyalamak için bir yolu var mı?
Bazılarınızın "neden doğrudan MapKit'in sağladığı içeriğe bakmadığını" söyleyeceğinin farkındayım. Maalesef, doğrudan context
'a girerken bir çizim hatası yaşıyoruz. Apple şu anda bizim için bu sorunu araştırıyor, ancak bu arada yerinde bir çözüm bulmamız gerekiyor. Yukarıda sunduğum bu geçici çözüm benim "en iyi" çekimim, ama yavaş tarafta biraz.
P.S. Burada da bir cevap aradığımdan beri bir ödül verdim. Özellikle de OS X'i hedefliyorum. Bu yüzden cevap orada çalışmalı. OP, iOS'ta bir cevap arıyordu.
Sorun için uygun bir çözüm buldunuz mu? Şu anda aynı sorunla karşı karşıyayım ... – Georg
Ne yazık ki ... CGFloat'ın 64 bitlik IOS aygıtlarında bir "çift" olduğu gerçeğine rağmen, büyük tam sayı ve daha büyük kesir, Harita kayasına çok küçük değişiklikler yapılması. –