gpt4 book ai didi

objective-c - 使用 MKOverlayRenderer 的动画 gif 在 MKMapView 叠加层中不起作用

转载 作者:太空狗 更新时间:2023-10-30 03:33:22 25 4
gpt4 key购买 nike

我正在尝试在 MKMapView 的叠加层中显示动画 gif。叠加层是使用 MKOverlayRenderer 创建的。为了在 iOS 7 中制作 gif 动画,我使用了发布的 UIImage+animatedGIF 类别 here在 GitHub 上。

动画 gif 的图像在使用类别的叠加层中显示良好;但是,gif 没有动画。我在 UIImageView 中使用类别为 gif 设置动画没有问题,但它似乎在 map View 叠加层中无法正常工作。

如何使用此类别将动画 gif 放置在 map View 叠加层中?

或者...

有没有办法在叠加层中放置一个 UIImageView,这可能会通过使用动画 gif 设置 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 map View 叠加层中为 gif 设置动画的建议,我们将不胜感激。

最佳答案

https://github.com/jhurray/iOS7AnimatedMapOverlay

这是在 iOS7 中动画覆盖的最佳方式

关于objective-c - 使用 MKOverlayRenderer 的动画 gif 在 MKMapView 叠加层中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20558591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com