我有一张包含多个地图图钉的地图。单击时,每个引脚将显示一个视图,其中包含特定于所选引脚的信息。所以让我们说一下关于pin的位置信息。
想象一下以下用例:
1-选择引脚时,使用有关所选引脚的信息为视图显示设置动画。
2-选择其他引脚时,为隐藏在步骤1中选择的视图设置动画。
3-步骤2中的动画完成后,使用有关新选择的图钉的特定信息为视图显示设置动画。
我已经实现了以下mapKit函数
func mapView(_ mapView: MKMapView, didDeselect view: MKAnnotationView) {
UIView.animate(withDuration: 0.5, animations: {
// Animate views
})
}
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView){
// did select code
UIView.animate(withDuration: 0.5, animations: {
// Animate views
})
}
一旦我尝试执行第2步的操作,就会执行didDeselct函数。然后,执行didSelect函数中的逻辑。这有效,但有一个问题。在执行didSelect函数之前,didDeselect中动画的执行没有完成。
如果didDeselct中的动画完成,我怎样才能阻止didSelect的执行。
请记住,我仍然需要didSelect函数,因此我无法在animate代码中放置此函数的逻辑。
答案 0 :(得分:2)
我建议您编写一个功能来显示和隐藏相关的view
。需要此功能来处理这两个过程。您还可以创建一个Bool
变量来了解是否有任何动画正在进行中。如果是,则等待它完成并在完成后再次触发该功能。您可以使用变量的get
,set
块或Observer Pattern
。我希望这会有所帮助。