Как изменить цвет отметок NSSlider?
Я знаю, следует изменить функцию drawTickMarks
, но что я должен сделать, чтобы изменить tickmarks
цвет?
1 ответ
Решение
Если вы хотите, чтобы они были другого цвета, нарисуйте их другим цветом.
Наличие пустой реализации drawTickMarks()
ничего не рисует.
Подкласс NSSliderCell
и установить класс ячейки.
Затем предоставьте процедуру рисования в drawTickMarks()
class CustomSliderCell: NSSliderCell {
override func drawTickMarks() {
guard let slider = controlView as? NSSlider, slider.numberOfTickMarks > 0 else {
return
}
let tickWidth: CGFloat = 5
let horizontalinset: CGFloat = 5
let verticalinset: CGFloat = 1
let drawRect = slider.bounds.insetBy(dx: horizontalinset, dy: verticalinset) //squish in slightly
let step = drawRect.width/CGFloat(numberOfTickMarks-1) //classic fenceposts problem
var mark = CGFloat(0)
for _ in 0..<numberOfTickMarks {
let blob = NSBezierPath(roundedRect: NSRect(x: mark + horizontalinset , y:verticalinset, width: tickWidth, height: tickWidth*2), xRadius: tickWidth/2.0, yRadius: tickWidth/2.0)
NSColor.green.set()
blob.fill()
NSColor.darkGray.set()
blob.stroke()
mark += step
}
}
}
Это демонстрационная и далеко не идеальная, но она должна дать вам представление о том, что нужно.