我正在使用iphone sdk并尝试在我的MKMapView上使用我的AnnotationView的自定义图像。我的方法适用于我的应用程序中的另一个屏幕,但对于有问题的一个,我在模拟器中看到图像,但在设备上看不到。我基本上创建了这样的自定义视图:
@implementation CustomAnnotationView
- (id) initWithAnnotation:(id <MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier
{
if (self = [ super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier ])
{
self.opaque = NO;
self.backgroundColor = [UIColor clearColor];
self.image = [UIImage imageNamed:@"MapIcon.png"];
}
return self;
}
@end
然后在getViewForAnnotation方法中我这样做:
// attempt to reuse
CustomAnnotationView* annotationView = (Custom AnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:@""];
// if reuse failed, create a new one
if (annotationView == nil)
{
annotationView = [[Custom AnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@""];
}
return annotationView;
它可以在模拟器中运行,但从不在设备中运行。如果我停止使用自定义视图,则将红色引脚放在两者中(即它可以工作)。有没有人看到这样的差异?
答案 0 :(得分:1)
哇。我发现问题是MapIcon.png不存在。这解释了为什么它不能在设备上运行,但它没有解释我是如何设法在模拟器中看到图标的。也许以某种扭曲的方式,它找到了项目中的MapIconLocale.png文件。或者可能在项目中有一些跟踪资产,因为我曾经在几周前使用MapIcon.png并将其删除(某种方式是副本)?
无论哪种方式,正确命名的图像显然都会修复它。