Swift: аннотация MKMapView появляется в верхнем левом углу после вызова didDeselectAnnotationView

Я рисую MKMapView в своем приложении для iOS, и на этой карте есть несколько аннотаций с пользовательскими изображениями, представляющими их. Изображение немного меняется (светится) при выборе определенной аннотации.

Для этого я использую метод делегата mapView(mapView: MKMapView!, didSelectAnnotationView view: MKAnnotationView!) для изменения изображения (путем изменения view.annotation.image). Кажется, это нормально работает.

Однако, когда я использую метод mapView(mapView: MKMapView!, didDeselectAnnotationView view: MKAnnotationView!), чтобы вернуть изображение обратно после его отмены, он перерисовывает аннотацию в верхнем левом углу карты. Любое взаимодействие пользователя с картой затем немедленно перерисовывает ее в нужном месте, так что это похоже на то, что карта не обновляется после вызова метода до тех пор, пока не будет сделан щелчок или что-то еще.

Действительно ли это правильный способ изменить изображение аннотации (путем перезаписи текущего view.annotation.image, и если да, то есть ли способ обновить карту?

РЕДАКТИРОВАТЬ: Я также заметил, что каждый раз, когда я выбираю новую аннотацию, центр карты смещается вниз примерно на 100 пикселей. Есть ли что-то, что мне не хватает, что мне нужно сделать после вызова любого из этих двух методов, упомянутых выше?


person fanfan    schedule 21.04.2015    source источник


Ответы (1)


Вы можете попробовать удалить и повторно добавить аннотацию, используя mapView.removeAnnotation(yourAnnotation) и mapview.addAnnotation(yourAnnotation) с новым изображением.

person Jona    schedule 15.07.2015