[英]Adding a CALayer to MKOverlayRenderer?
In iOS 7, MKOverlayView
was replaced by MKOverlayRenderer
. 在IOS 7,
MKOverlayView
被取代MKOverlayRenderer
。 Before, I was able to add a UIImageView
as a subview to MKOverlayView
, and access the CALayer
of the MKOverlayView
. 之前,我是能够添加
UIImageView
作为子视图MKOverlayView
,并访问CALayer
中的MKOverlayView
。 Now, without UIView
gone in MKOverlayRenderer
, I'm not sure on how to add a custom CALayer
(I have a CAKeyFrameAnimation
that goes through a series of pictures rapidly). 现在,如果没有
UIView
进入MKOverlayRenderer
,我不确定如何添加自定义CALayer
(我有一个CAKeyFrameAnimation
浏览一系列图片的CAKeyFrameAnimation
)。 How would I add a UIImageView
into MKOverlayRenderer
? 如何将
UIImageView
添加到MKOverlayRenderer
? How would I add a CALayer
in a CGContextRef
(used by MKOverlayRenderer
)? 如何在
CGContextRef
添加CALayer
(由MKOverlayRenderer
)?
I tried doing it on my own, but it doesn't go through the images at all. 我尝试自己做,但它根本没有通过图像。
- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context {
CGContextSaveGState(context);
CGRect test = [self rectForMapRect:self.overlay.boundingMapRect];
// Clip the drawing space to the map rect
CGRect clipRect = [self rectForMapRect:mapRect];
CGContextClipToRect(context, clipRect);
// CoreGraphics' coordinate system is flipped, so we need to transform it first
CGContextScaleCTM(context, 1.0, -1.0);
CGContextTranslateCTM(context, 0, -test.size.height);
// Draw the portion of the image in the map rect
// CGContextDrawImage(context, test, [image CGImage]);
CGContextRestoreGState(context);
CALayer *sublayer = [CALayer layer];
sublayer.frame = test;
NSArray *radarImages = [NSArray arrayWithObjects:(id)image.CGImage, image1.CGImage, image2.CGImage, image3.CGImage, image4.CGImage, image5.CGImage, image6.CGImage, image7.CGImage, image8.CGImage, image9.CGImage, image10.CGImage, image11.CGImage, image12.CGImage, image13.CGImage, image14.CGImage, image15.CGImage, image16.CGImage, image17.CGImage, image18.CGImage,image19.CGImage,image20.CGImage,image21.CGImage, image22.CGImage, image23.CGImage, image24.CGImage, nil];
anim = [CAKeyframeAnimation animation];
[anim setKeyPath:@"contents"];
[anim setCalculationMode:kCAAnimationDiscrete];
[anim setValues:radarImages];
[anim setRepeatCount:INFINITY];
[anim setDuration:2.6];
[self drawLayer:sublayer inContext:context];
[sublayer addAnimation:anim forKey:nil];
[sublayer renderInContext:context];
[sublayer setNeedsDisplay];
}
Any help is appreciated, thanks! 任何帮助表示赞赏,谢谢!
Try adding the following code 尝试添加以下代码
[[[self view] layer] addSublayer: sublayer];
and use NSMutableArray instead of NSArray. 并使用NSMutableArray而不是NSArray。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.