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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage