Установка представления линейки

Добавление представления линейки к представлению прокрутки может быть столь же простым как вызов NSScrollView метод setHasHorizontalRuler: и setHasVerticalRuler: методы. Они создают экземпляры класса представления линейки по умолчанию, который можно изменить использование NSScrollView метод класса setRulerViewClass:. Можно также установить представления линейки непосредственно о базисном использовании на экземпляр setHorizontalRulerView: и setVerticalRulerView:. Как только Вы добавили линейки к представлению прокрутки, можно скрыть и показать их использование setRulersVisible:.

Вне создания линеек Вы должны предпринять только два шага для установки их должным образом для использования представлениями, содержавшими в представлении прокрутки: найдите нулевые отметки линеек и зарезервируйте комнату для вспомогательного представления. Вы обычно выполняете эти шаги только один раз при установке NSScrollView объект с линейками. Однако, если Вы позволяете пользователю сбрасывать атрибуты документа, такие как поля, необходимо изменить местоположения нулевой отметки также. Кроме того, при многократном использовании представления прокрутки путем загрузки нового представления документа, Вы, возможно, должны установить линейки снова с различными настройками.

Первый шаг должен определить, где Вы хотите, чтобы нулевые отметки линеек были расположены относительно источника границ представления документа. Нулевые отметки являются совпадающими с источником границ по умолчанию, но можно изменить это с методом setOriginOffset:. Этот метод берет смещение, указанное в системе координат представления документа. Если необходимо установить смещение источника на основе точки в подпредставлении представления документа, такого как текстовое представление, это вставляется на странице, использовать convertPoint:fromView: понять его в системе координат представления документа. Этот фрагмент кода Objective C помещает нулевые отметки в источнике границ клиентского представления, находящегося где-нибудь в представлении документа:

zero = [docView convertPoint:[clientView bounds].origin fromView:clientView];
[horizRuler setOriginOffset:zero.x - [docView bounds].origin.x];

После размещения нулевых отметок необходимо установить линейки так, чтобы они не изменялись в размере, поскольку пользователь работает в представлении документа. Например, если два различных подпредставления представления документа используют различные представления аксессуара, представление линейки увеличивает себя по мере необходимости каждый раз, когда Вы изменяете вспомогательное представление. Такие изменения на высоте неприглядные и в худшем случае запутывающие для пользователя. Для предотвращения этой проблемы вычислите заранее размеры самого большого вспомогательного представление и самых больших маркеров, и установите требуемую толщину представления линейки для этих элементов использование setReservedThicknessForAccessoryView: и setReservedThicknessForMarkers:. Например, если у Вас есть два представления аксессуара для горизонтальной линейки, один 16.0 Единицы в высоту PostScript и другой 24.0, вызвать setReservedThicknessForAccessoryView: с параметром 24.0.