Создание и конфигурирование представления прокрутки
Прокрутите представления, может быть создан и сконфигурирован программно или в Интерфейсном Разработчике. Эта статья описывает обе процедуры.
Создание представления прокрутки в интерфейсном разработчике
Создание представления прокрутки в Интерфейсном Разработчике является прямым.
Создайте представление или представления, которые будут представлением документа представления прокрутки.
Выберите то представление или представления, которые будут представлением документа представления прокрутки.
Выберите Layout> подпредставления Make> Представление Прокрутки. Это создает новое
NSScrollViewэкземпляр с выбранным представлением или представлениями, как его представление документа.Откройте инспектора и сконфигурируйте видимые скроллеры, цвет фона, и строку и суммы прокрутки страницы.
Создание представления прокрутки программно
Приложения часто создают представления прокрутки программно. Экземпляры NSScrollView создаются с помощью initWithFrame: метод, указывая позицию и размер прямоугольника кадра представления прокрутки. После инициализации NSScrollView экземпляр необходимо, как минимум, установить представление документа с помощью метода setDocumentView:.
Пример кода в Перечислении 1 демонстрирует, как создать представление прокрутки для NSImageView экземпляр, который является достаточно большим для отображения всего изображения.
Перечисление 1 , Создающее прокрутку, просматривает экземпляр программно
// theWindow is an IBOutlet that is connected to a window |
// theImage is assumed to be declared and populated already |
// determine the image size as a rectangle |
// theImage is assumed to be declared elsewhere |
NSRect imageRect=NSMakeRect(0.0,0.0,[theImage size].width,[theImage size].height); |
// create the image view with a frame the size of the image |
NSImageView *theImageView=[[NSImageView alloc] initWithFrame:imageRect]; |
[theImageView setBounds:imageRect]; |
// set the image for the image view |
[theImageView setImage:theImage]; |
// create the scroll view so that it fills the entire window |
// to do that we'll grab the frame of the window's contentView |
// theWindow is an outlet connected to a window instance in Interface Builder |
NSScrollView *scrollView = [[NSScrollView alloc] initWithFrame: |
[[theWindow contentView] frame]]; |
// the scroll view should have both horizontal |
// and vertical scrollers |
[scrollView setHasVerticalScroller:YES]; |
[scrollView setHasHorizontalScroller:YES]; |
// configure the scroller to have no visible border |
[scrollView setBorderType:NSNoBorder]; |
// set the autoresizing mask so that the scroll view will |
// resize with the window |
[scrollView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; |
// set theImageView as the documentView of the scroll view |
[scrollView setDocumentView:theImageView]; |
// setting the documentView retains theImageView |
// so we can now release the imageView |
[theImageView release]; |
// set the scrollView as the window's contentView |
// this replaces the existing contentView and retains |
// the scrollView, so we can release it now |
[theWindow setContentView:scrollView]; |
[scrollView release]; |
// display the window |
[theWindow makeKeyAndOrderFront:nil]; |
} |
Когда создается программно, прокрутите представления, не имеют никаких скроллеров. Вы указываете, что представление прокрутки должно вывести на экран скроллеры путем передачи параметра YES к методам setHasVerticalScroller: и setHasHorizontalScroller:. Представление прокрутки выделяет и выводит на экран скроллеры автоматически. Можно сконфигурировать представление прокрутки для отображения его скроллеров только, когда представление документа является достаточно большим для требования прокрутки использования метода setAutohidesScrollers:, передача YES как параметр.
Вычисление размера представления прокрутки
Если Вы знаете только требуемый размер довольного представление, трудно вычислить тип телосложения представления прокрутки. NSScrollView обеспечивает метод класса удобства frameSizeForContentSize:hasHorizontalScroller:hasVerticalScroller:borderType: определить тип телосложения представления прокрутки на основе предметной области, присутствия полос прокрутки и типа границы представления прокрутки. Метод возвращает прямоугольник, подходящий для использования с initWithFrame:.
Установка прокрутки инкрементов
NSScrollView определяет два уровня инкрементной прокрутки: прокрутка строки постепенно увеличивается и инкремент прокрутки страницы. Каждое из этих значений может быть сконфигурировано отдельно для прокрутки направления горизонтальной и вертикальной прокрутки представления.
Инкремент прокрутки строки перемещает представление документа мелкой суммой, часто в ответ на пользователя, щелкающего по кнопкам прокрутки скроллера. Инкремент прокрутки строки установлен и для горизонтальных и для вертикальных направлений с помощью setLineScroll: метод. Также можно указать инкремент прокрутки строки для вертикальных и горизонтальных скроллеров отдельно с помощью setVerticalLineScroll: и setHorizontalLineScroll: методы, соответственно.
Прокрутка страницей перемещает представление документа большей суммой, обычно размер видимой области представления документа. Сумма прокрутки страницы указана с помощью setPageScroll: метод или отдельно использование setVerticalPageScroll: и setHorizontalPageScroll: методы. Сумма прокрутки страницы отличается от инкремента прокрутки строки в этом, значения прокрутки страницы указывают сумму видимого содержания представления, которое останется, когда представление документа прокрутит. Установка прокрутки страницы оценивает 0,0, подразумевает, что вся видимая часть представления документа заменяется, когда происходит прокрутка страницы.
Пользователи прокручивают непосредственно к расположению в документе путем перетаскивания кнопки скроллера. По умолчанию представление прокрутки обновляет содержание динамично, поскольку оно прокручивает. Вы отключаете динамическую прокрутку путем отправки setScrollsDynamically: метод к представлению прокрутки, передавая NO как параметр. В динамической прокрутке выключен, обновления происходят только когда разъединения абонентом мышь.