我正在添加和删除地图视图中的注释。当我删除一个它突然消失,看起来有点惊人,我宁愿它优雅地消失。
我尝试用UIView:animateWithDuration删除它:但它不是一个可动画的属性。
如果没有其他简单的解决方案,我认为我可以获取注释视图以淡化其alpha,然后从地图中删除其注释。但问题是它看起来似乎没有注释视图对其地图视图的引用?添加一个开始变得有点凌乱。 是否有一些简单快速的解决方案可以优雅地删除注释?
答案 0 :(得分:6)
使用animateWithDuration
应该可以正常工作。要淡化删除注释,可以:
MKAnnotationView *view = [self.mapView viewForAnnotation:annotation];
if (view) {
[UIView animateWithDuration:0.5 delay:0.0 options:0 animations:^{
view.alpha = 0.0;
} completion:^(BOOL finished) {
[self.mapView removeAnnotation:annotation];
view.alpha = 1.0; // remember to set alpha back to 1.0 because annotation view can be reused later
}];
} else {
[self.mapView removeAnnotation:annotation];
}
答案 1 :(得分:0)
我认为您提出的解决方案是正确的。将动画设置为opacity = 0,然后在完成后从MKMapView
中删除注释。启动动画的代码不必在视图中;代码的更好位置可以是视图控制器。考虑使用NSNotificationCenter
通知视图控制器注释正在请求淡出和删除。