2013-10-19 19 views
10

iOS 7'de MKOverlayView, MKOverlayRenderer ile değiştirilmiştir. Daha önce UIImageView'u MKOverlayView'a bir alt görünüm olarak ekleyebildim ve MKOverlayView'un CALayer'una erişebildim. Şimdi, UIView olmadan MKOverlayRenderer gitti, özel bir CALayer eklemeye emin değilim (bir seri resimden hızla geçen bir CAKeyFrameAnimation var). UIImageView'u MKOverlayRenderer içine nasıl eklerim? Bir CALayer'u CGContextRef'a (MKOverlayRenderer tarafından kullanılır) nasıl eklerim?MKOverlayRenderer'a CALayer Ekleme?

Bunu kendi başıma yapmayı denedim, ancak görüntülerin hiçbirinden geçmiyor.

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

CGRect test = [self rectForMapRect:self.overlay.boundingMapRect]; 
// Clip the drawing space to the map rect 
CGRect clipRect = [self rectForMapRect:mapRect]; 

CGContextClipToRect(context, clipRect); 

// CoreGraphics' coordinate system is flipped, so we need to transform it first 
CGContextScaleCTM(context, 1.0, -1.0); 
CGContextTranslateCTM(context, 0, -test.size.height); 

// Draw the portion of the image in the map rect 

// CGContextDrawImage(context, test, [image CGImage]); 

CGContextRestoreGState(context); 

CALayer *sublayer = [CALayer layer]; 
sublayer.frame = test; 
NSArray *radarImages = [NSArray arrayWithObjects:(id)image.CGImage, image1.CGImage, image2.CGImage, image3.CGImage, image4.CGImage, image5.CGImage, image6.CGImage, image7.CGImage, image8.CGImage, image9.CGImage, image10.CGImage, image11.CGImage, image12.CGImage, image13.CGImage, image14.CGImage, image15.CGImage, image16.CGImage, image17.CGImage, image18.CGImage,image19.CGImage,image20.CGImage,image21.CGImage, image22.CGImage, image23.CGImage, image24.CGImage, nil]; 


anim = [CAKeyframeAnimation animation]; 
[anim setKeyPath:@"contents"]; 
[anim setCalculationMode:kCAAnimationDiscrete]; 
[anim setValues:radarImages]; 
[anim setRepeatCount:INFINITY]; 
[anim setDuration:2.6]; 
[self drawLayer:sublayer inContext:context]; 
[sublayer addAnimation:anim forKey:nil]; 
[sublayer renderInContext:context]; 
[sublayer setNeedsDisplay]; 

} 

Herhangi bir yardım için teşekkür ederiz, teşekkürler!

+0

Aynı sorunu yaşıyorum, http://stackoverflow.com/questions/20558591/animated-gif-not-working-in-mkmapview-overlay-using-mkoverlayrenderer?noredirect=1#comment30789828_20558591. Umarım Stack Overflow'taki birisi bize yardımcı olacaktır. Bunu anlarsan lütfen bana bildirin. – wigging

+0

Belki de -setNeedsDisplayInMapRect: zoomScale öğesini çağırmayı deneyin: drawMapRect öğesinin tekrar çağrılmasını sağlamak için kirli olarak işaretlemek için bir zamanlayıcıda. – MindJuice

+0

herhangi bir güncelleme burada mı? –

cevap

-1

deneyin aşağıdaki kodu

 [[[self view] layer] addSublayer: sublayer]; 

ekleme ve NSMutableArray yerine NSArray kullanın.

İlgili konular