Сжатие NSScroller из NSScrollView в представлении со слоем
У меня странная проблема (ошибка?): Скажи, что у меня есть WebView
, который будет прокручивать по вертикали.
Теперь я хочу уменьшить mainFrame
Вертикальный скроллер немного, так что его высота меньше, чем NSScrollView
сам.
Причина этого заключается в том, что я хочу прикрепить два вида (сверху и снизу) над веб-представлением.
Я сделал это легко в методе делегата frameLoad, изменив кадр verticalScroller (изменив начало и высоту).
Это работает, но:
Однако, как только я установил webView и его родительский NSView на слой-слой, он перестает работать, скроллер сбрасывает себя в положение и высоту по умолчанию.
Теперь я не знаю, это ошибка или нет. Есть ли другой способ, которым я мог бы попытаться "вставить" скроллер?
1 ответ
Вы пробовали создавать подклассы NSScroller, устанавливая его в качестве вертикального скроллера для NSScrollView и переопределяя
-(void) setFrameOrigin:(NSPoint)origin;
-(void) setFrameSize:(NSSize)size;
Я предполагаю, что создание слоя NSView на основе слоя заставляет снова устанавливать frameSize (NSScrollView, кажется, берет на себя немного контроля над этим, потому что, когда вы создаете пользовательский скроллер, не существует "чистого" способа установить NSScroller как горизонтальный или вертикальный другой чем звонить -initWithFrame: с
- высота> ширина, чтобы автоматически установить его как вертикальный
- ширина> высота, чтобы автоматически установить его как горизонтальный
Мое другое предложение было бы, если вы хотите, чтобы NSScroller не полностью отражал размер его родительского NSScrollView, было бы лучше иметь NSView в качестве представления содержимого веб-просмотра. И у NSView есть 3 подпредставления. Два вида сверху и снизу закреплены, а один NSScrollView посередине. В этом случае пользовательский NSScroller не требуется.