Sto tentando di visualizzare una gif animata in una sovrapposizione per MKMapView
. La sovrapposizione viene creata utilizzando MKOverlayRenderer
. Per animare la gif in iOS 7, sto utilizzando la categoria UIImage+animatedGIF
pubblicata here su GitHub.Gif animato che non funziona nella sovrapposizione di MKMapView utilizzando MKOverlayRenderer
L'immagine della gif animata viene visualizzata correttamente nella sovrapposizione utilizzando la categoria; tuttavia, la gif non si anima. Non ho problemi ad usare la categoria per animare una gif in un UIImageView
ma non sembra funzionare correttamente in una sovrapposizione di visualizzazione mappa.
Come posso utilizzare questa categoria per posizionare una gif animata in una sovrapposizione di visualizzazione mappa?
o ...
C'è un modo per inserire un UIImageView
nella sovrapposizione che potrebbe risolvere il mio problema impostando il UIImageView
con la gif animata?
mio sovrapposizione renderer sottoclasse è la seguente:
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
Nel mio UIViewController
, io sono il recupero della gif animata e aggiungendo la sovrapposizione chiamando un metodo che contiene il seguente codice:
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];
Qualsiasi suggerimento su come animare una gif in una sovrapposizione di viste della mappa di iOS 7 sarebbe molto apprezzato.
ho fatto qualcosa di simile per il rendering informazioni meteo sul MapView Vuoi così solo? Se sì allora fammi sapere vi spiegherò tu in dettaglio. –
@iosRider Sì, si prega di spiegare più in dettaglio o inviare come risposta. – wigging