Я использовал раскадровку для настройки NSScrollView и не могу найти ни одной опции, где я могу отключить фон скроллера. Любые идеи о том, как это сделать?
Как сделать фон Scroller прозрачным в NSScrollView?
comment
Подкласс NSScroller.
- person El Tomato   schedule 27.06.2018
comment
Да, у меня есть подкласс NSScroller, но AutoHideScroller не работает...
- person dbrownjave   schedule 27.06.2018
comment
На какую версию macOS вы ориентируетесь?
- person Jake3231   schedule 01.08.2018
comment
версия 10.13.5
- person dbrownjave   schedule 01.08.2018
Ответы (3)
Основная идея заключается в том, чтобы создать подкласс NSScroller и затем внести соответствующие изменения.
У меня было такое же требование, поэтому я разделил его на подклассы и внес изменения, как показано. объективный код C преобразован с помощью онлайн-инструмента, поэтому извиняюсь за ошибки и смотрите.
это может помочь.
// Converted to Swift 4 by Swiftify v4.1.6766 - https://objectivec2swift.com/
// GridScroller.h
// Created by Vikram on 08/09/16.
import Cocoa
class OpaqGridScroller: NSScroller {
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
NSColor.clear.setFill()
dirtyRect.fill()
// whatever style you want here for knob if you want
knobStyle = .dark
}
}
person
Vikram Sinha
schedule
18.07.2018
да. Однако у меня есть подкласс NSScrollView. Ты пробовал?
- person dbrownjave; 30.07.2018
да, он работает нормально на моей стороне. установите для автоскрытия значение yes в IB и увеличьте содержимое прокрутки во время выполнения, и он соответственно отобразит скроллер.
- person Vikram Sinha; 30.07.2018
Вы можете попробовать переопределить прямоугольник рисования прокрутки
override func draw(_ dirtyRect: NSRect) {
NSDrawWindowBackground(bounds);
self.drawKnob()
}
Вы всегда можете нарисовать собственный цвет прямоугольника, установив его перед
override func draw(_ dirtyRect: NSRect) {
NSColor.clear.set()
__NSRectFill(dirtyRect)
self.drawKnob()
}
person
Aleksey Kornienko
schedule
27.06.2018
Да, это работает! но NSScroller чистый, а не темный, что означает, что его не видно.
- person dbrownjave; 27.06.2018
Какую версию MacOS вы используете?
- person Aleksey Kornienko; 27.06.2018
версия macOS: 10.13.3
- person dbrownjave; 27.06.2018
Это решение сработало для меня.
class OpaqueGridScroller: NSScroller {
override func draw(_ dirtyRect: NSRect) {
// NSColor.clear.set()
// dirtyRect.fill()
self.drawKnob()
}
}
person
Klajd Deda
schedule
18.09.2019