2013-10-19 13 views
10

iOS 7では、MKOverlayViewMKOverlayRendererに置き換えられました。以前はをサブビューとしてMKOverlayViewに追加し、MKOverlayViewCALayerにアクセスできました。現在、UIViewMKOverlayRendererになっていないと、カスタムを追加する方法がわかりませんCALayer(私はCAKeyFrameAnimationがあります。 MKOverlayRendererUIImageViewを追加するにはどうすればよいですか? CGContextRefMKOverlayRendererで使用)にCALayerを追加するにはどうすればよいですか?MKOverlayRendererにCALayerを追加しますか?

私自身でやってみましたが、画像を一切通らないようにしました。

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

} 

ご協力いただきありがとうございます。次のコード

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

とNSMutableArrayのの代わりにNSArrayを使用しての追加

+0

私は同じ問題を抱えています。http://stackoverflow.com/questions/20558591/animated-gif-not-working-in-mkmapview-overlay-using-mkoverlayrenderer?noredirect=1#comment30789828_20558591うまくいけば、スタックオーバーフローの誰かが私たちを助けてくれるでしょう。もしあなたがこれを理解してくれたら教えてください。 – wigging

+0

おそらく、-setNeedsDisplayInMapRect:zoomScale:を呼び出すと、タイマーで汚れているとマークされ、drawMapRectが再び呼び出されます。 – MindJuice

+0

ここに更新情報がありますか? –

答えて

-1

してみてください。