El gif animado no funciona en la superposición de MKMapView utilizando MKOverlayRenderer
Estoy tratando de mostrar un gif animado en una superposición deMKMapView
. La superposición se crea utilizando laMKOverlayRenderer
. Para animar el gif en iOS 7, estoy usando elUIImage+animatedGIF
categoría publicadaaquí en GitHub.
La imagen del gif animado se muestra bien en la superposición utilizando la categoría; Sin embargo, el gif no se anima. No tengo ningún problema en usar la categoría para animar un gif en unUIImageView
pero no parece funcionar correctamente en una superposición de vista de mapa.
¿Cómo puedo usar esta categoría para colocar un gif animado en una superposición de vista de mapa?
o...
¿Hay una manera de colocar unUIImageView
en la superposición que podría resolver mi problema estableciendo elUIImageView
con el gif animado?
Mi subclase de renderizador de superposición es la siguiente:
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
En miUIViewController
, Estoy recuperando el gif animado y agregando la superposición llamando a un método que contiene el siguiente código:
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];
Cualquier sugerencia sobre cómo animar un gif en una superposición de vista de mapa de iOS 7 sería muy apreciada.