MKAnnotationView图像不显示

时间:2012-02-25 00:28:59

标签: iphone ios mkmapview mkannotationview

我在UIView子类中有一个MKMapView实例,它通过实现viewForAnnotation:(id<MKAnnotation>) annotation方法符合MKMapViewDelegate协议。代码是:

- (MKAnnotationView*) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
if ([annotation isKindOfClass:[DriverLocation class]]) {
    MKAnnotationView* a = [self.map dequeueReusableAnnotationViewWithIdentifier:@"driverView"];
    if (a == nil) {
        MKAnnotationView* a = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"driverView"];
        a.enabled = YES;
        a.image = [UIImage imageNamed:@"car.png"];
    }
    return a;
}
return nil;

}

图像未正确加载 - 加载的图像属性的高度和宽度为零,MKAnnotationView实例a的尺寸也为零。

图像为4Kb png 32像素x 32像素。

我可以确认图像已被复制到模拟器中的根.app目录中。

任何帮助,为什么这不加载将不胜感激!

3 个答案:

答案 0 :(得分:2)

为了完成这篇文章:你需要改变 MKAnnotationView* a = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"driverView"];

为:

a = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"driverView"];

答案 1 :(得分:0)

设置图像后尝试添加[a sizeToFit]

答案 2 :(得分:0)

我之前见过这个。为我解决问题的是重新导出我的PNG。出于某种原因,他们中的一些人在其中获取元数据(如Fireworks的东西),这导致它在某些情况下出错。我已经看到这种情况主要发生在Internet Explorer上,但也可以通过MKMapView看到它。更奇怪的是,它在模拟器中工作,但在设备上却没有。