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!
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
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
herhangi bir güncelleme burada mı? –