滚动时MKAnnotation图钉图像不会改变

时间:2016-05-24 01:36:06

标签: ios objective-c mkannotation

当我滚动到页面时,我编写代码来更改mkannotation pin图像....但是我会 测试它无法改变这是我的代码

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{
int pageNum = (int)(self.scroll.contentOffset.x / self.scroll.frame.size.width);
if(pageNum==0){
    if([[annotation title]isEqualToString:@"place1"]){
    myPin = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"place"];
    myPin =[[MKAnnotationView alloc]
            initWithAnnotation:annotation reuseIdentifier:@"place"];
    myPin.image = [UIImage imageNamed:@"star.png"];
    }
}
else if (pageNum==1){
    if([[annotation title]isEqualToString:@"place2"]){
        myPin = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"place"];
        myPin =[[MKAnnotationView alloc]
                initWithAnnotation:annotation reuseIdentifier:@"place"];
        myPin.image = [UIImage imageNamed:@"star.png"];
    }
}
else if (pageNum==3){
    if([[annotation title]isEqualToString:@"place3"]){
    myPin = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"place"];
    myPin =[[MKAnnotationView alloc]
            initWithAnnotation:annotation reuseIdentifier:@"place"];
    myPin.image = [UIImage imageNamed:@"star.png"];
    }
}
}

1 个答案:

答案 0 :(得分:0)

如果我正确地阅读您的问题,您似乎有一个带有滚动视图的视图控制器,并且您希望根据滚动视图的“页面”来定制地图(或地图)上的标记。目前正在展示。

我猜测代码不起作用,因为你真的无法控制何时创建这些注释视图;只要需要视图,MapKit就会调用该方法。 (我假设您知道上面的代码对所有三个页面使用相同的图钉图像,并且您没有涵盖pageNum==2案例。)

我认为更好的方法可能是弄清楚滚动视图何时移动到新的“页面”,然后删除并重新添加不同的注释,以便它们具有您想要的外观。很难给出更好的答案,因为我无法想象你正在使用的布局。