我正在尝试在叠加层中显示动画 gifMKMapView
。覆盖层是使用以下命令创建的MKOverlayRenderer
。为了在 iOS 7 中制作 gif 动画,我使用UIImage+animatedGIF
已发布类别here https://github.com/mayoff/uiimage-from-animated-gif在 GitHub 上。
动画 gif 的图像在使用类别的叠加层中显示良好;然而,gif 并没有动画效果。我可以使用类别来制作 gif 动画UIImageView
但它似乎在地图视图叠加中无法正常工作。
如何使用此类别将动画 gif 放置在地图视图叠加层中?
or...
有没有办法放置一个UIImageView
在覆盖层中,这可能通过设置来解决我的问题UIImageView
与动画gif?
我的覆盖渲染器子类如下:
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 my 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 动画的建议将不胜感激。