gpt4 book ai didi

ios - 修改现有的 MKAnnotationView

转载 作者:行者123 更新时间:2023-11-29 10:22:29 25 4
gpt4 key购买 nike

我有一个带有大量默认 MKAnnotationView 引脚的 MapKit View 。我想修改一个现有的图钉(即一个已经出现在 View 中一段时间​​,而不是在最初出现时的图钉)。当某个位置的基础数据发生变化时,我想更改它的副标题,并给它一个小动画(抖动或类似的)。

虽然我看到了我的 MKAnnotationView,但它们似乎没有 superview。例如:

for (MKAnnotationView *annotationView in self.mapView.annotations) {
if (annotationView.superview) {
NSLog(@"Hooray!");
}
}

虽然我有很多注释(我看到了它们,而且我已经在此处的调试器中看到了它们),但没有一个有 superView。

这可行吗?还是我需要为此目的实现自定义 View ?

最佳答案

mapView.annotations 是一组注释,而不是注释 View 。当您尝试在注释上调用 superview 方法时,它没有崩溃,这让我感到有些惊讶。

获取注解 View ,就是

MKPinAnnotationView *annotationView = (id)[mapView viewForAnnotation:annotation];
if (annotationView) {
// annotation view for this annotation is available
}

不过,我不清楚为什么您需要 superview 作为注释 View 。就我个人而言,我不愿意在 map View 的内部 View 层次结构中乱搞。

如果我想动画化颜色的变化,我可能会这样做:

MKPinAnnotationView *visibleAnnotationView = (id)[mapView viewForAnnotation:annotation];
if (visibleAnnotationView) {
[UIView transitionWithView:visibleAnnotationView duration:0.25 options:UIViewAnimationOptionTransitionFlipFromRight animations:^{
visibleAnnotationView.pinTintColor = [UIColor blueColor];
} completion:nil];
}

显然,您可以制作任何想要的动画,但希望这能说明这个想法。

但请注意,情况实际上比这复杂一点,因为如果用户将注释 View 从屏幕上平移然后再打开,您的 MKMapViewDelegate 方法 mapView:viewForAnnotation : 必须知道要返回什么类型的注释 View 。因此,您可能最终想要一个自定义的 MKAnnotation 子类,其中包含您需要的任何状态信息,以便 mapView:viewForAnnotation: 可以相应地执行操作。

关于ios - 修改现有的 MKAnnotationView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34277255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com