Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка платформы MapKit ссылка класса MKAnnotationView

Опции
Развертывание Target:

На этой странице
Язык:

MKAnnotationView

MKAnnotationView класс ответственен за представление аннотаций визуально в представлении карты. Представления аннотации слабо связываются к соответствующему объекту пометок, который является объектом, соответствующим MKAnnotation протокол. Когда координатная точка аннотации находится в видимой области, представление карты просит, чтобы его делегат обеспечил соответствующее представление аннотации. Представления аннотации могут быть переработаны позже и помещены в очередь повторного использования, сохраняющуюся представлением карты.

Самый эффективный способ обеспечить содержание для представления аннотации состоит в том, чтобы установить image свойство. Размеры представления аннотации самостоятельно автоматически к изображению Вы указываете, и рисует то изображение для его содержания. Поскольку это - представление, однако, Вы могли также переопределить drawRect: метод и рисует содержание Вашего представления вручную. Если Вы принимаете решение переопределить drawRect: непосредственно и Вы не указываете пользовательское изображение в image свойство, знать, что ширина и высота кадра представления аннотации установлены в 0 по умолчанию. Прежде чем Ваше пользовательское содержание может быть нарисовано, необходимо установить ширину и высоту к ненулевым значениям путем изменения представления frame свойство. В целом, если Ваше содержание состоит полностью из статических изображений, более эффективно установить image свойство и изменение это по мере необходимости, чем нарисовать изображения самостоятельно.

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

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

Многократное использование представлений аннотации

Представления аннотации разработаны, чтобы быть снова использованными, поскольку пользователь (или Ваше приложение) изменяет видимую область карты. Повторное использование представлений аннотации обеспечивает значительные повышения производительности во время прокрутки путем предотвращения создания новых объектов представления в это время критическая работа. Поэтому представления аннотации не должны быть сильно связаны к содержанию их связанной аннотации. Вместо этого должно быть возможно использовать свойства представления аннотации (или методы установщика) для конфигурирования представления для нового объекта пометок.

Каждый раз, когда Вы инициализируете новое представление аннотации, необходимо всегда указывать идентификатор повторного использования для того представления. Поскольку представления аннотации больше не необходимы, представление карты может поместить их в очередь повторного использования. Поскольку новые аннотации добавляются к представлению карты, объект делегата может тогда исключить из очереди и реконфигурировать существующее представление (а не создать новое), использование dequeueReusableAnnotationViewWithIdentifier: метод MKMapView.

Разделение на подклассы примечаний

Можно использовать MKAnnotationView класс, как или разделяют его на подклассы для обеспечения пользовательского поведения по мере необходимости. image свойство класса позволяет, Вы установить появление аннотации просматриваете, не разделяя на подклассы непосредственно. Вы могли бы также создать пользовательские подклассы как удобство и использовать их для помещения представления аннотации в известное состояние. Например, MKPinAnnotationView подкласс инициализирует содержание представления аннотации к изображению контакта.

Нет никаких особых требований для разделения на подклассы MKAnnotationView. Однако следующий список включает некоторые причины, которые Вы могли бы хотеть разделить на подклассы и некоторые методы, которые Вы переопределите для реализации желаемого поведения:

  • Для помещения представления аннотации в непротиворечивое состояние обеспечьте пользовательский метод инициализации. Ваш пользовательский метод инициализации тогда вызвал бы initWithAnnotation:reuseIdentifier: инициализировать суперкласс.

  • Для обеспечения пользовательских представлений выноски переопределите leftCalloutAccessoryView метод и использование это для возврата представлений.

При поддержке перемещаемых представлений аннотации в iOS 4.0 и позже подкласс ответственен за изменение значения в dragState свойство к надлежащим значениям в ключевых точках перехода в работе перетаскивания. Для получения дополнительной информации см. описание того свойства.

Наследование


Оператор импорта


Swift

import MapKit

Objective C

@import MapKit;

Доступность


Доступный в OS X v10.9 и позже.
  • Инициализирует и возвращает новое представление аннотации.

    Объявление

    Swift

    init!(annotation annotation: MKAnnotation!, reuseIdentifier reuseIdentifier: String!)

    Objective C

    - (instancetype)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier

    Параметры

    annotation

    Объект пометок для соединения с новым представлением.

    reuseIdentifier

    Если Вы планируете снова использовать представление аннотации для подобных типов аннотаций, передайте строку для идентификации его. Несмотря на то, что можно передать nil если Вы не намереваетесь снова использовать представление, многократное использование представлений аннотации обычно рекомендуется.

    Возвращаемое значение

    Инициализированное представление аннотации или nil если была проблема, инициализирующая объект.

    Обсуждение

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

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

  • Вызванный, когда представление удалено из очереди повторного использования.

    Объявление

    Swift

    func prepareForReuse()

    Objective C

    - (void)prepareForReuse

    Обсуждение

    Реализация по умолчанию этого метода ничего не делает. Можно переопределить его в пользовательских представлениях аннотации и использовать его для помещения представления в известное состояние, прежде чем это будет возвращено делегату представления карты.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

    См. также

    dequeueReusableAnnotationViewWithIdentifier: (MKMapView)

  • Булево значение, указывающее, включена ли аннотация.

    Объявление

    Swift

    var enabled: Bool

    Objective C

    @property(nonatomic, getter=isEnabled) BOOL enabled

    Обсуждение

    Значение по умолчанию этого свойства YEStrue. Если значение этого свойства NOfalse, представление аннотации игнорирует сенсорные события и не может быть выбрано. Подклассы могут также вывести на экран содержание аннотации по-другому в зависимости от значения этого свойства.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

  • Изображение, которое будет выведено на экран представлением аннотации.

    Объявление

    Swift

    var image: NSImage!

    Objective C

    @property(nonatomic, strong) NSImage *image

    Обсуждение

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

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

  • Булево значение, указывающее, выделяется ли представление аннотации.

    Объявление

    Swift

    var highlighted: Bool

    Objective C

    @property(nonatomic, getter=isHighlighted) BOOL highlighted

    Обсуждение

    Вы не должны устанавливать значение этого свойства непосредственно. Представление карты устанавливает его в ответ на сенсорные события, входящие или выходящие из границ представления аннотации.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

  • Объект пометок в настоящее время связывался с представлением.

    Объявление

    Swift

    var annotation: MKAnnotation!

    Objective C

    @property(nonatomic, strong) id< MKAnnotation > annotation

    Обсуждение

    Вы не должны изменять значение этого свойства непосредственно. Это свойство содержит не -nil оцените только, в то время как представление аннотации видимо на карте. Если представление ставится в очередь и ожидающий, чтобы быть снова использованным, значение nil

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

  • centerOffset centerOffset Свойство

    Смещение (в пикселях), в котором можно вывести на экран представление.

    Объявление

    Swift

    var centerOffset: CGPoint

    Objective C

    @property(nonatomic) CGPoint centerOffset

    Обсуждение

    По умолчанию центральная точка представления аннотации помещается в координатную точку связанной аннотации. Можно использовать это свойство, чтобы изменить местоположение представления аннотации по мере необходимости. Эти значения смещения x и y измеряются в пикселях. Положительные значения смещения перемещают представление аннотации вниз и вправо, в то время как отрицательные величины повышают его и налево.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

  • calloutOffset calloutOffset Свойство

    Смещение (в пикселях), в котором можно поместить пузырь выноски.

    Объявление

    Swift

    var calloutOffset: CGPoint

    Objective C

    @property(nonatomic) CGPoint calloutOffset

    Обсуждение

    Это свойство определяет дополнительное расстояние, которым можно переместить пузырь выноски. Когда это свойство установлено в (0, 0), точка привязки пузыря выноски помещается в главную центральную точку кадра представления аннотации. Указание положительных значений смещения перемещает пузырь выноски вниз и вправо при указании, что отрицательные величины повышают его и налево.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

  • reuseIdentifier reuseIdentifier Свойство

    Строка, идентифицирующая то это представление аннотации, является допускающей повторное использование. (только для чтения)

    Объявление

    Swift

    var reuseIdentifier: String! { get }

    Objective C

    @property(nonatomic, readonly) NSString *reuseIdentifier

    Обсуждение

    Вы указываете идентификатор повторного использования при создании представления. Вы используете этот тип позже для получения представления аннотации, создававшегося ранее, но которое в настоящее время не использовано, потому что его аннотация не находится на экране.

    При определении отчетливо различных типов аннотаций (с отчетливо различными представлениями аннотации для движения с ними), можно дифференцироваться между типами аннотации путем указания различных идентификаторов повторного использования для каждого.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

  • Устанавливает состояние выбора представления аннотации.

    Объявление

    Swift

    func setSelected(_ selected: Bool, animated animated: Bool)

    Objective C

    - (void)setSelected:(BOOL)selected animated:(BOOL)animated

    Параметры

    selected

    Содержит значение YEStrue если представление должно вывести на экран себя, как выбрано.

    animated

    Набор к YEStrue если анимировано изменение в состоянии выбора.

    Обсуждение

    Вы не должны вызывать этот метод непосредственно. MKMapView вызовы объектов этот метод в ответ на взаимодействие с пользователем с аннотацией.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

    См. также

    selectAnnotation:animated: (MKMapView)

  • Булево значение, указывающее, выбирается ли в настоящее время представление аннотации.

    Объявление

    Swift

    var selected: Bool

    Objective C

    @property(nonatomic, getter=isSelected) BOOL selected

    Обсуждение

    Вы не должны устанавливать значение этого свойства непосредственно. Если свойство содержит YEStrue, представление аннотации выводит на экран пузырь выноски.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

  • canShowCallout canShowCallout Свойство

    Булево значение, указывающее, в состоянии ли представление аннотации вывести на экран дополнительную информацию в пузыре выноски.

    Объявление

    Swift

    var canShowCallout: Bool

    Objective C

    @property(nonatomic) BOOL canShowCallout

    Обсуждение

    Если значение этого свойства YEStrue, когда пользователь касается выбранного представления аннотации, стандартный пузырь выноски показан. Выноска использует заголовок и текст подзаголовка от связанного объекта пометок. Если нет никакого текста заголовка, тем не менее, представление аннотации обрабатывается как будто enabled свойство установлено в NOfalse. Выноска также выводит на экран любые пользовательские представления выноски, сохраненные в leftCalloutAccessoryView и rightCalloutAccessoryView свойства.

    Если значение этого свойства NOfalse, значение заголовка и строк подзаголовка проигнорировано, и представление аннотации остается включенным по умолчанию. Можно все еще отключить представление явно с помощью enabled свойство.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

  • Представление для отображения на левой стороне стандартного пузыря выноски.

    Объявление

    Swift

    var leftCalloutAccessoryView: NSView!

    Objective C

    @property(strong, nonatomic) NSView *leftCalloutAccessoryView

    Обсуждение

    Значение по умолчанию этого свойства nil. Левое представление выноски обычно используется, чтобы вывести на экран информацию об аннотации или соединиться с пользовательской информацией, предоставленной Вашим приложением.

    Если представление также потомком, которое Вы указываете является UIControl когда управление касается, класс, можно использовать делегата представления карты для получения уведомлений. Если это не убывает от UIControl, Ваше представление ответственно за обработку любых сенсорных событий в ее границах.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

    См. также

    canShowCallout

  • Представление для отображения на правой стороне стандартного пузыря выноски.

    Объявление

    Swift

    var rightCalloutAccessoryView: NSView!

    Objective C

    @property(strong, nonatomic) NSView *rightCalloutAccessoryView

    Обсуждение

    Это свойство установлено в nil по умолчанию. Правильное представление выноски обычно используется для соединения с более подробной информацией об аннотации. Общее представление для указания для этого свойства UIButton возразите, чей тип установлен в UIButtonTypeDetailDisclosure.

    Если представление также потомком, которое Вы указываете является UIControl когда управление касается, класс, можно использовать делегата представления карты для получения уведомлений. Если это не убывает от UIControl, Ваше представление ответственно за обработку любых сенсорных событий в ее границах.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

    См. также

    canShowCallout

  • Булевская переменная, указывающая, перемещаемо ли представление аннотации.

    Объявление

    Swift

    var draggable: Bool

    Objective C

    @property(nonatomic, getter=isDraggable) BOOL draggable

    Обсуждение

    Установка этого свойства к YEStrue делает аннотацию перемещаемой пользователем. Если YEStrue, связанный объект пометок должен также реализовать setCoordinate: метод. Значение по умолчанию этого свойства NOfalse.

    Установка этого свойства к YEStrue, позволяет карте просмотреть, знают, что аннотация всегда перемещаема. Другими словами, Вы не можете conditionalize перетаскивать операции путем попытки остановить уже инициировавшуюся работу; выполнение так может привести к неопределенному поведению. После того, как начатый, работа перетаскивания должна всегда продолжаться к завершению.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

  • Устанавливает текущее состояние перетаскивания для представления аннотации.

    Объявление

    Swift

    func setDragState(_ newDragState: MKAnnotationViewDragState, animated animated: Bool)

    Objective C

    - (void)setDragState:(MKAnnotationViewDragState)newDragState animated:(BOOL)animated

    Параметры

    newDragState

    Новое перетаскивание утверждает для представления аннотации.

    animated

    Если YEStrue, изменение в новом состоянии перетаскивания должно быть анимировано; иначе, это должно быть сделано без анимаций.

    Обсуждение

    Приложения, предназначающиеся для iOS 4.2 и позже, могут переопределить этот метод и использовать, это для реализации перетаскивает поддержку пользовательских представлений аннотации. Поскольку система обнаруживает пользовательские действия, которые указали бы перетаскивание, она вызывает этот метод для обновления состояния перетаскивания. В ответ на эти изменения Ваша пользовательская реализация этого метода должна сделать следующее:

    • Когда изменения состояния перетаскивания к MKAnnotationViewDragStateStarting, установите состояние в MKAnnotationViewDragStateDragging. Если Вы выполняете анимацию для указания начала перетаскивания, и animated параметр YEStrue, выполните ту анимацию прежде, чем изменить состояние.

    • Когда изменения состояния к также MKAnnotationViewDragStateCanceling или MKAnnotationViewDragStateEnding, установите состояние в MKAnnotationViewDragStateNone. Если Вы выполняете анимацию в конце перетаскивания, и animated параметр YEStrue, необходимо выполнить ту анимацию прежде, чем изменить состояние.

    Реализация по умолчанию этого метода устанавливает значение dragState свойство к значению в newDragState параметр только. Поэтому прямые подклассы могут просто вызвать наследованную версию этого метода для изменения состояния перетаскивания; иначе, просто измените значение в draggable свойство непосредственно.

    Изменение состояния к MKAnnotationViewDragStateDragging или MKAnnotationViewDragStateNone способ сигнализировать к представлению карты, что Вы сделаны с любыми анимациями, которые Вы хотели выполнить. Например, когда работа перетаскивания начинается для аннотации контакта, MKPinAnnotationView класс выполняет анимацию для подъема контакта от карты. Точно так же, когда контакт отбрасывается, класс выполняет анимацию отбрасывания. Даже если Вы не выполняете анимаций, необходимо вызвать наследованную версию этого метода для обновления dragState свойство.

    Вы не должны пытаться прервать новую работу перетаскивания путем изменения состояния от MKAnnotationViewDragStateStarting к MKAnnotationViewDragStateNone. Если Вы не хотите, чтобы Ваше представление аннотации было перемещаемо, установите draggable свойство к NOfalse.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

  • dragState dragState Свойство

    Текущее состояние перетаскивания представления аннотации.

    Объявление

    Swift

    var dragState: MKAnnotationViewDragState

    Objective C

    @property(nonatomic) MKAnnotationViewDragState dragState

    Обсуждение

    Приложения, предназначающиеся для iOS 4.1 и ранее, могут использовать это свойство для поддержки, перетаскивают операции в пользовательских представлениях аннотации. Если Ваше выполнение приложения в iOS 4.2 или позже, необходимо переопределить setDragState:animated: метод и использование это для управления перетаскиванием утверждает вместо этого.

    Для поддержки перетаскивают операции, необходимо переопределить реализацию этого свойства и обновить состояние перетаскивания в следующие разы:

    • Когда изменения состояния перетаскивания к MKAnnotationViewDragStateStarting, необходимо установить состояние в MKAnnotationViewDragStateDragging. При выполнении анимации для указания начала перетаскивания, необходимо выполнить ту анимацию прежде, чем изменить состояние. Изменение состояния к новому значению позволяет карте знать, что сделаны Ваши анимации.

    • Когда изменения состояния к также MKAnnotationViewDragStateCanceling или MKAnnotationViewDragStateEnding, установите состояние в MKAnnotationViewDragStateNone. При выполнении анимации в конце перетаскивания необходимо выполнить ту анимацию прежде, чем изменить состояние.

    Изменение состояния к MKAnnotationViewDragStateDragging или MKAnnotationViewDragStateNone значение является способом сигнализировать к представлению карты, что Вы сделаны с любыми анимациями, которые Вы хотели выполнить. Например, когда работа перетаскивания начинается для аннотации контакта, MKPinAnnotationView класс выполняет анимацию для подъема контакта от карты. Точно так же, когда контакт отбрасывается, класс выполняет анимацию отбрасывания. Даже если Вы не выполняете анимаций, необходимо все еще изменить значение этого свойства для отражения корректного состояния.

    Вы не должны пытаться прервать новую работу перетаскивания путем изменения состояния от MKAnnotationViewDragStateStarting к MKAnnotationViewDragStateNone. Если Вы не хотите, чтобы Ваше представление аннотации было перемещаемо, установите draggable свойство к NOfalse.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

    См. также

    перемещаемый

  • Эти константы указывают текущее состояние перетаскивания представления аннотации.

    Объявление

    Swift

    enum MKAnnotationViewDragState : UInt { case None case Starting case Dragging case Canceling case Ending }

    Objective C

    typedef enum MKAnnotationViewDragState { MKAnnotationViewDragStateNone = 0, MKAnnotationViewDragStateStarting, MKAnnotationViewDragStateDragging, MKAnnotationViewDragStateCanceling, MKAnnotationViewDragStateEnding } MKAnnotationViewDragState;

    Константы

    • None

      MKAnnotationViewDragStateNone

      Представление не вовлечено в работу перетаскивания. Когда перетаскивание заканчивается или отменяется, представление аннотации ответственно за возврат себя к этому состоянию.

      Доступный в OS X v10.9 и позже.

    • Starting

      MKAnnotationViewDragStateStarting

      Действие произошло, который указал, что представление должно начать перетаскивать. Представление карты автоматически перемещает представления аннотации в это состояние в ответ на надлежащие пользовательские действия.

      Доступный в OS X v10.9 и позже.

    • Dragging

      MKAnnotationViewDragStateDragging

      Представление посреди работы перетаскивания и отслеживает прогресс.

      Доступный в OS X v10.9 и позже.

    • Canceling

      MKAnnotationViewDragStateCanceling

      Действие произошло, который указал, что представление должно отменить работу перетаскивания. Можно поместить представление аннотации в это состояние для прерывания работы.

      Доступный в OS X v10.9 и позже.

    • Ending

      MKAnnotationViewDragStateEnding

      Действие произошло, который указал, что представление было отброшено пользователем. Представление карты автоматически перемещает представления аннотации в это состояние в ответ на надлежащие пользовательские действия.

      Доступный в OS X v10.9 и позже.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.

  • Уведомляет наблюдателей что заголовок или информация о подзаголовке измененного объекта пометок.

    Используйте уведомления KVO вместо этого.

    Это уведомление поддерживает унаследованные приложения и больше не необходимо. MapKit отслеживает изменения в заголовке и подзаголовке аннотации с помощью уведомлений KVO.

    Оператор импорта

    Objective C

    @import MapKit;

    Swift

    import MapKit

    Доступность

    Доступный в OS X v10.9 и позже.