MKAnnotationView изображение не отображается - PullRequest
0 голосов
/ 25 февраля 2012

У меня есть экземпляр MKMapView в подклассе UIView, который соответствует протоколу MKMapViewDelegate путем реализации метода viewForAnnotation:(id<MKAnnotation>) annotation.Код которого:

- (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 ]

2 голосов
/ 03 октября 2012

Для полноты этого поста: Вам необходимо изменить MKAnnotationView* a = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"driverView"];

на:

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

0 голосов
/ 25 февраля 2012

Я видел это раньше. Что решило проблему для меня, так это реэкспорт моих PNG. По некоторым причинам, некоторые из них содержат метаданные (например, Fireworks), что приводит к ошибкам в определенных ситуациях. Я видел, что это происходит в основном с Internet Explorer, но видел это и с MKMapView. Еще более странно, что он работал в симуляторе, но не на устройстве.

0 голосов
/ 25 февраля 2012

Попробуйте добавить [a sizeToFit] после настройки изображения.

...