Animiertes GIF funktioniert nicht in MKMapView-Overlay mit MKOverlayRenderer
Ich versuche, ein animiertes GIF in einer Überlagerung für anzuzeigenMKMapView
. Das Overlay wird mit der Taste erstelltMKOverlayRenderer
. Um das GIF in iOS 7 zu animieren, verwende ich dasUIImage+animatedGIF
Kategorie gepostetHier auf GitHub.
Das Bild des animierten GIF wird in der Überlagerung anhand der Kategorie gut angezeigt. Das GIF wird jedoch nicht animiert. Ich habe kein Problem damit, ein GIF in einer Kategorie zu animierenUIImageView
In einer Kartenansicht-Überlagerung scheint dies jedoch nicht korrekt zu funktionieren.
Wie kann ich diese Kategorie verwenden, um ein animiertes GIF in einer Kartenansicht zu platzieren?
oder...
Gibt es eine Möglichkeit, aUIImageView
in der Überlagerung, die mein Problem durch Einstellen der lösen könnteUIImageView
mit dem animierten gif?
Meine Overlay-Renderer-Unterklasse lautet wie folgt:
MapOverlayRenderer.h
#import <MapKit/MapKit.h>
@interface MapOverlayRenderer : MKOverlayRenderer
- (instancetype)initWithOverlay:(id<MKOverlay>)overlay overlayImage:(UIImage *)overlayImage;
@end
MapOverlayRenderer.m
#import "MapOverlayRenderer.h"
@interface MapOverlayRenderer ()
@property (strong,nonatomic) UIImage *image;
@end
@implementation MapOverlayRenderer
- (instancetype)initWithOverlay:(id<MKOverlay>)overlay overlayImage:(UIImage *)overlayImage {
self = [super initWithOverlay:overlay];
if (self) {
_image = overlayImage;
}
return self;
}
- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context {
CGImageRef imageReference = self.image.CGImage;
MKMapRect theMapRect = [self.overlay boundingMapRect];
CGRect theRect = [self rectForMapRect:theMapRect];
CGContextScaleCTM(context, 1.0, -1.0);
CGContextTranslateCTM(context, 0.0, -theRect.size.height);
CGContextDrawImage(context, theRect, imageReference);
}
@end
In meinemUIViewController
, Ich rufe das animierte GIF ab und füge das Overlay hinzu, indem ich eine Methode aufrufe, die den folgenden Code enthält:
NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:[NSURL URLWithString:radarUrl] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
self.radarImage = [UIImage animatedImageWithAnimatedGIFData:data]; //for animated radar image
dispatch_async(dispatch_get_main_queue(), ^{
[self.mapView addOverlay:self.polygon];
});
}] resume];
Anregungen zum Animieren eines Gifs in einer iOS 7-Kartenansicht sind jederzeit willkommen.