在MKMapView Swift 3 iOS上停止所有动画

时间:2017-05-20 18:34:06

标签: ios swift animation

过去一天我一直坚持这个问题。我创建了一个自定义MKAnnotation子类,以在MKMapView上显示各种自定义引脚。我递归地调用一个函数来保持这些引脚在地图上的动画效果。我的目标是当用户点击按钮时停止所有这些动画。我试过了

self.view.layer.removeAllAnimations()

self.map.layer.removeAllAnimations()

和其他hacky解决方案,但似乎没有工作。

以下是创建动画/图钉移动的代码

func animate(duration:Double, newLocation:CLLocationCoordinate2D){
    UIView.animate(withDuration: duration, animations: {
        self.coordinate = newLocation
    }) { (done) in
        self.finished_segment()
    }
} 

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

任何坚持这个问题的人。问题是我必须从与注释相关联的MKAnnotationView中删除动画。我基本上在我在mapView注释委托方法中设置的自定义类中创建了一个成员变量,如下所示。

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    let annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "annotationView") ?? MKAnnotationView()
    if let a = annotation as? Alien{
        annotationView.image = a.image
        a.annotationView = annotationView
    }

    return annotationView
}

并从地图中删除动画。只需致电

self.annotationView.layer.removeAllAnimations()