动画地图叠加:当添加MKCircle时,如何使MKCircle从0扩展到其完整大小?

时间:2015-04-03 16:08:10

标签: ios mkmapview core-graphics mkoverlay mkoverlaypathrenderer

我想让我的MKCircle在添加到地图时从0扩展到指定的半径大小。 MKOverlayRenderer给我带来了不错的最终结果,但它自发地添加了圆圈。我想为它设置一个更平滑的入口动画,但我不知道如何在没有动画层的情况下做到这一点。

我尝试使用CABasicAnimation添加扩展的UIView,并在完成时将其替换为覆盖,但代码很难看,并且在添加叠加层时会出现明显的闪烁。

我看过另外两个声称有动画叠加层的项目,但它们都不是我正在寻找的银弹。

  • http://yickhong-ios.blogspot.com/2012/04/animated-circle-on-mkmapview.html 早在2012年,这个人就继承了MKCircleView,显然已被弃用/强烈劝阻。
  • https://github.com/jhurray/iOS7AnimatedMapOverlay这个人继承了UIImageView,添加了一个圆圈png,并添加了一些CABasicAnimations以使其扩展和淡入淡出。然后,只要选择了注释,他就会将此图像视图添加到地图中。动画工作正常,但每当区域开始更改时,动画都会被删除,并且只有在区域完成更改时才会再次添加动画。重绘区域变化不是一个有效的叠加层。他所拥有的只是一个MKCircle设置为nil,如果你想要一个叠加层,它会告诉你“改变它”。当UIImageView完成扩展时,我可以“更改它”以添加叠加层,但有些东西告诉我它会产生与我的UIView解决方法相同的闪烁结果。

还有另一种方法我正在考虑我不太确定(因为我从未尝试过单独使用Core Graphics制作动画效果),这是子类化MKOverlayRenderer,设置自定义绘图( MKCircle?)在- (void)drawMapRect:到宽度和高度x = 0,并使用NSTimer递增x并调用setNeedsDisplayInMapRect直到圆圈达到其完整大小。这对我来说听起来像是一个长镜头,并且可能有一种更简单的方法来做到这一点。

我需要有人指出我正确的方向。

0 个答案:

没有答案