MKMapView
のオーバーレイにアニメーションgifを表示しようとしています。オーバーレイはMKOverlayRenderer
を使用して作成されます。 iOS 7でgifをアニメーション化するには、UIImage+animatedGIF
カテゴリを使用しています。hereはGitHubに投稿されています。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私UIViewController
で
#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
、私はアニメーション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をアニメーション化する方法についてのご意見をお待ちしております。
でオーバーレイをアニメーション化するための最良の方法ですあなたの詳細。 –
@iosRiderはい、もっと詳しく説明するか、回答として送信してください。 – wigging