Ich versuche, ein animiertes GIF in einem Overlay für MKMapView
anzuzeigen. Das Overlay wird mit der MKOverlayRenderer
erstellt. Um das gif in iOS 7 zu animieren, verwende ich die UIImage+animatedGIF
Kategorie, die auf GitHub here gepostet wird.Animierte GIF funktioniert nicht in MKMapView-Overlay mit MKOverlayRenderer
Das Bild des animierten Gifs wird im Overlay mit der Kategorie angezeigt. Das Animationsobjekt wird jedoch nicht animiert. Ich habe kein Problem mit der Kategorie, um ein gif in einem UIImageView
zu animieren, aber es scheint nicht richtig in einem Kartenansicht-Overlay zu funktionieren.
Wie kann ich diese Kategorie verwenden, um ein animiertes GIF in einem Kartenansichts-Overlay zu platzieren?
oder ...
Gibt es eine Möglichkeit, eine UIImageView
im Overlay zu platzieren, die mein Problem lösen könnte, indem die UIImageView
mit dem animierten GIF-Einstellung?
Meine Overlay Renderer Unterklasse ist die folgende:
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 meinem UIViewController
, ich bin das animierte Gif holen und das Hinzufügen der Overlay durch Aufrufen einer Methode, 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];
Vorschläge zur Animation eines Gifs in einem iOS 7-Kartenansicht-Overlay werden sehr geschätzt.
ich so etwas auf MapView zum Rendern von Wetterdaten getan haben Sie möchten, dass nur wollen Sie? Wenn ja, dann mich wissen lassen, werde ich erklären, Sie im Detail. –
@iosRider Ja, bitte ausführlicher erklären oder als Antwort einreichen. – wigging