我在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目录中。
任何帮助,为什么这不加载将不胜感激!
答案 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看到它。更奇怪的是,它在模拟器中工作,但在设备上却没有。