didSelect 执行不等待 didDeSelect 动画结束
didSelect execution not waiting for didDeSelect animation to end
我有一张带有多个地图图钉的地图。单击每个图钉时,将显示一个视图,其中包含特定于所选图钉的信息。因此,让我们说出有关图钉的位置信息。
想象一下以下用例:
1- 选择图钉后,使用有关所选图钉的信息动画显示视图。
2- 选择不同的 pin 时,动画隐藏在步骤 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中动画的执行没有结束
如何阻止 didSelect 的执行,直到 didDeselct 中的动画完成。
请记住,我仍然需要 didSelect 函数,所以我无法将此函数的逻辑放在动画代码中。
我建议你写一个函数来显示和隐藏相关的view
。将需要此功能来处理这两个过程。您还可以创建一个 Bool
变量来了解是否有任何动画正在进行。如果是,则 make 等待它完成并在完成时再次触发该功能。您可以使用变量的 get
、set
块或 Observer Pattern
。我希望这会有所帮助。
我有一张带有多个地图图钉的地图。单击每个图钉时,将显示一个视图,其中包含特定于所选图钉的信息。因此,让我们说出有关图钉的位置信息。
想象一下以下用例:
1- 选择图钉后,使用有关所选图钉的信息动画显示视图。
2- 选择不同的 pin 时,动画隐藏在步骤 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中动画的执行没有结束
如何阻止 didSelect 的执行,直到 didDeselct 中的动画完成。
请记住,我仍然需要 didSelect 函数,所以我无法将此函数的逻辑放在动画代码中。
我建议你写一个函数来显示和隐藏相关的view
。将需要此功能来处理这两个过程。您还可以创建一个 Bool
变量来了解是否有任何动画正在进行。如果是,则 make 等待它完成并在完成时再次触发该功能。您可以使用变量的 get
、set
块或 Observer Pattern
。我希望这会有所帮助。