Animowany gif nie działa w nakładce MKMapView przy użyciu MKOverlayRenderer
Próbuję wyświetlić animowany gif w nakładce dlaMKMapView
. Nakładka jest tworzona za pomocąMKOverlayRenderer
. Aby animować gif w iOS 7, używamUIImage+animatedGIF
kategoria opublikowanatutaj na GitHub.
Obraz animowanego gif wyświetla się dobrze w nakładce przy użyciu kategorii; jednak gif nie jest animowany. Nie mam problemu z użyciem kategorii do animowania gifa w aUIImageView
ale nie działa poprawnie w nakładce widoku mapy.
Jak mogę użyć tej kategorii, aby umieścić animowany gif w nakładce widoku mapy?
lub...
Czy istnieje sposób na umieszczenieUIImageView
w nakładce, która może rozwiązać mój problem, ustawiającUIImageView
z animowanym gifem?
Moja podklasa renderera nakładki jest następująca:
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
W moimUIViewController
, Pobieranie animowanego gifu i dodawanie nakładki przez wywołanie metody, która zawiera następujący kod:
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];
Wszelkie sugestie dotyczące animowania gif w nakładce widoku mapy w systemie iOS 7 byłyby bardzo mile widziane.