2013-10-19 13 views
10

In iOS 7 wurde MKOverlayView durch MKOverlayRenderer ersetzt. Zuvor war es mir möglich, eine UIImageView als Unteransicht zu MKOverlayView hinzuzufügen und auf die CALayer der MKOverlayView zuzugreifen. Jetzt, ohne UIView gegangen in MKOverlayRenderer, bin ich nicht sicher, wie man eine Gewohnheit CALayer hinzufügt (ich habe eine CAKeyFrameAnimation, die eine Reihe Bilder schnell durchläuft). Wie würde ich eine UIImageView in MKOverlayRenderer hinzufügen? Wie würde ich ein CALayer in einem CGContextRef (von MKOverlayRenderer verwendet) hinzufügen?Hinzufügen eines CALayer zu MKOverlayRenderer?

Ich habe versucht, es auf eigene Faust, aber es geht nicht durch die Bilder überhaupt.

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

} 

Jede Hilfe wird geschätzt, danke!

+0

Ich habe das gleiche Problem, http://stackoverflow.com/questions/20558591/animated-gif-not-working-in-mkmapview-overlay-using-mkoverlayrenderer?noredirect=1#comment30789828_20558591. Hoffentlich hilft uns jemand bei Stack Overflow. Bitte lassen Sie mich wissen, wenn Sie das herausfinden. – wigging

+0

Vielleicht versuchen Sie Aufruf -setNeedsDisplayInMapRect: zoomScale: auf einen Timer, um es schmutzig zu markieren, damit Ihre DrawMapRect erneut aufgerufen wird. – MindJuice

+0

irgendwelche Updates hier? –

Antwort

-1

Versuchen, indem die folgenden Code

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

und verwenden NSMutableArray statt NSArray.