Как изменить цвет отметок NSSlider? - PullRequest
0 голосов
/ 03 июня 2018

Я знаю, следует изменить функцию drawTickMarks, но что мне делать, чтобы изменить tickmarks цвет?

1 Ответ

0 голосов
/ 03 июня 2018

Если вы хотите, чтобы они были другого цвета, нарисуйте их другим цветом.

Пустая реализация drawTickMarks() ничего не рисует.

enter image description here

Подкласс 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
        }
    }

}

Это демо и далеко от совершенства, но оно должно дать вам представление о том, что нужно.

enter image description here

...