Анимированный GIF не работает в оверлее MKMapView с помощью MKOverlayRenderer
Я пытаюсь отобразить анимированный GIF-файл в оверлее дляMKMapView
, Оверлей создан с использованиемMKOverlayRenderer
, Чтобы анимировать GIF в iOS 7, ям, используяUIImage+animatedGIF
категория размещенаВот на GitHub.
Изображение анимированного GIF отлично отображается в оверлее, используя категорию; однако, gif не оживляет. У меня нет проблем с использованием категории для анимации GIF вUIImageView
но, похоже, он не работает корректно в режиме наложения карты.
Как я могу использовать эту категорию, чтобы поместить анимированный GIF в оверлей карты?
или же...
Есть ли способ разместитьUIImageView
в оверлее, который может решить мою проблему, установивUIImageView
с анимированным GIF?
Мой подкласс рендеринга оверлеев выглядит следующим образом:
MapOverlayRenderer.h
#import
@interface MapOverlayRenderer : MKOverlayRenderer
- (instancetype)initWithOverlay:(id)overlay overlayImage:(UIImage *)overlayImage;
@end
MapOverlayRenderer.m
#import "MapOverlayRenderer.h"
@interface MapOverlayRenderer ()
@property (strong,nonatomic) UIImage *image;
@end
@implementation MapOverlayRenderer
- (instancetype)initWithOverlay:(id)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
В моемUIViewController
Я извлекаю анимированный GIF и добавляю оверлей, вызывая метод, который содержит следующий код:
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];
Будем весьма благодарны за любые предложения о том, как анимировать gif в оверлее вида карты iOS 7.