我想让我的 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,让它展开和淡化。然后,只要选择了注释,他就会将此图像视图添加到地图中。动画效果很好,但是每当区域开始变化时,动画就会被删除,并且只有在区域完成变化时才会再次添加。它不是重绘区域更改的有效叠加层。他所拥有的只是一个设置为 nil 的 MKCircle,如果你想要一个覆盖,它会告诉你“改变它”。当 UIImageView 完成扩展时,我可能会“更改它”以添加叠加层,但有些事情告诉我它会产生与我的 UIView 解决方法相同的闪烁结果。
我正在考虑另一种我不太确定的方法(因为我从未尝试仅从 Core Graphics 产生动画效果),那就是子类MKOverlayRenderer
化,将自定义绘图(MKCircle?)设置- (void)drawMapRect:
为宽度和高度 x = 0,并使用 anNSTimer
递增 x 并调用setNeedsDisplayInMapRect
直到圆达到其完整大小。这对我来说听起来有点远,可能有更简单的方法来做到这一点。
我需要有人为我指出正确的方向。