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!
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
Vielleicht versuchen Sie Aufruf -setNeedsDisplayInMapRect: zoomScale: auf einen Timer, um es schmutzig zu markieren, damit Ihre DrawMapRect erneut aufgerufen wird. – MindJuice
irgendwelche Updates hier? –