Обновление представления линейки
Единственное клиентское представление может содержать много выбираемых элементов, таких как графические формы или абзацы текста с различными настройками линейки. Когда выбор изменяется, клиент должен сбросить маркеры представления линейки на основе нового выбора. Этот вид обновления является довольно прямым и может быть выполнен, как описано в Использовании Клиента Представления Линейки для ситуаций, где изменяется само клиентское представление.
Другой вид обновления необходим, когда Вы хотите поддерживать динамическое обновление маркеров линейки, поскольку пользователь управляет элементами клиентского представления. Например, когда пользователь перемещает форму, Вы хотите, чтобы маркеры линейки переместили, когда пользователь заканчивает перемещать ее. Любой метод, изменяющий соответствующие атрибуты выбора, должен обновить маркеры линейки, ли путем замены их в качестве набора или путем проверки каждого настоящего и обновления его расположения.
Можно даже поместить такой код обновления в модальном цикле, обрабатывающем элементы перетаскивания вокруг в клиентском представлении, так, чтобы маркеры отследили позицию выбранного пункта. Это может быть довольно тяжелой работой для выполнения, также обрабатывая перемещение выбранного пункта, как бы то ни было. В поддержку более легкого веса средние значения показа этой информации NSRulerView позволяет Вам проводить временные линии линейки, которые могут быть нарисованы и стерты очень быстро. Один метод, moveRulerlineFromLocation:toLocation:
, управляет получением строк линейки. Требуется два расположения, выраженные в системе координат NSRulerView, стирая строку линейки в старом расположении и перерисовывая его в новом. Для создания новой строки линейки указать –1.0
как старое расположение; для стирания того полностью указать –1.0
как новое расположение. Несмотря на то, что Вы ответственны за отслеживание расположения, чтобы стереть и перерисовать, это не является столь же громоздким или неэффективным как отсеивающий через или заменяющий сами маркеры.