如何轻轻地从地图视图中删除注释?

时间:2014-03-10 17:50:01

标签: ios mkmapview

我正在添加和删除地图视图中的注释。当我删除一个它突然消失,看起来有点惊人,我宁愿它优雅地消失。

我尝试用UIView:animateWithDuration删除它:但它不是一个可动画的属性。

如果没有其他简单的解决方案,我认为我可以获取注释视图以淡化其alpha,然后从地图中删除其注释。但问题是它看起来似乎没有注释视图对其地图视图的引用?添加一个开始变得有点凌乱。 是否有一些简单快速的解决方案可以优雅地删除注释?

2 个答案:

答案 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通知视图控制器注释正在请求淡出和删除。