过去一天我一直坚持这个问题。我创建了一个自定义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()
}
}
非常感谢任何建议。
答案 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()