Хобрук: Ваш путь к мастерству в программировании

Изображение MKAnnotationView не отображается

У меня есть экземпляр 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 в симуляторе.

Любая помощь относительно того, почему это не загружается, будет оценена по достоинству!


  • Извини. Я идиот. Я создаю две переменные с именем a, экземпляр a в операторе if должен быть просто a = ... не MKAnnotationView* a. 25.02.2012

Ответы:


1

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

to:

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

03.10.2012

2

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

25.02.2012

3

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

25.02.2012
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..