MapView设置自定义大头针颜色(Obj-C)

  • 大头针视图也存在重用机制,优化内存

  • 类似于tableView一样,设置代理,实现重用方法viewForAnnotation

  • 设置大头针视图颜色需要使用MKAnnotationView的子类MKPinAnnotationView才行

  • 为了不影响定位大头针状态,所以重用中需要判断排除定位大头针
    定位大头针类型(MKUserLocation)

/**
 *  当设置大头针视图的时候大头针模型时调用
 *
 *  @param mapView    地图视图
 *  @param annotation 大头针模型
 *
 *  @return 大头针视图
 */
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation{
    
    static NSString *identifier = @"annotation";
    
    // 排除定位大头针(否则定位大头针样式也会被修改掉)
    if ([annotation isKindOfClass:[MKUserLocation class]]) {
        return nil;
    }
    
    // 设置颜色需要使用MKAnnotationView的子类才行  MKPinAnnotationView
    MKPinAnnotationView *anno = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
    
    if (anno == nil) {
        anno = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:identifier];
    }
    // 设置属性
    anno.pinTintColor = [UIColor greenColor];

    /**
     *  以上设置后,大头针视图上方的标注还需要手动设置显示
     */
    // 设置显示标注
    anno.canShowCallout = YES;
    // 设置动画效果滑落
    anno.animatesDrop = YES;

    return anno;
    
}

演示效果(未设置显示标注和动画滑落):

MapView设置自定义大头针颜色(Obj-C)_第1张图片
pinTintColor.png
MapView设置自定义大头针颜色(Obj-C)_第2张图片
customer.png

你可能感兴趣的:(MapView设置自定义大头针颜色(Obj-C))