我試圖在覆蓋圖中爲MKMapView
顯示一個動畫gif。覆蓋圖使用MKOverlayRenderer
創建。要在iOS 7中爲gif製作動畫,我使用GitHub上發佈的UIImage+animatedGIF
類別here。使用MKOverlayRenderer在MKMapView覆蓋圖中不起作用的動畫gif
動畫GIF的圖像在覆蓋圖中使用類別顯示得很好;然而,gif不會動畫。我沒有問題使用該類別在UIImageView
中爲GIF製作動畫,但它在地圖視圖疊加中似乎不能正確工作。
如何使用此類別在地圖視圖疊加中放置動畫gif?
或...
有沒有辦法來放置在可能通過與gif動畫設置UIImageView
解決我的問題疊加一個UIImageView
?
我的疊加渲染的子類如下:
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
在我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];
任何有關如何在iOS 7地圖視圖疊加中動畫gif的建議將不勝感激。
我已經做了類似的東西呈現在MapView的天氣信息,你要喜歡,只有在iOS7動畫疊加的最佳方式嗎?如果是的話讓我知道我會解釋你詳細介紹。 –
@iosRider是的,請詳細解釋或提交作爲答案。 – wigging