gpt4 book ai didi

objective-c - 如何改变 NSScroller 的颜色?

转载 作者:行者123 更新时间:2023-12-03 16:31:44 25 4
gpt4 key购买 nike

我正在尝试更改滚动条本身的颜色,似乎我需要覆盖 drawKnob 周围的某些内容,但我找不到任何看起来合适的方法。

我想到的一种方法是注入(inject)一种新样式并让滚动条使用它,但同样,我在 NSScroller header 中找不到任何有关 NSColor 的信息。

有什么想法吗?

最佳答案

无需从头开始重画。就这么简单:

import AppKit

class CyanideScroller: NSScroller {
private var _bkgrColour: NSColor = NSColor.black
private var _knobColour: NSColor = NSColor.white
private var isHorizontal = false

var bkgrColour: NSColor {
get { return _bkgrColour}
set { _bkgrColour = newValue}
}

var knobColour: NSColor {
get { return _knobColour}
set { _knobColour = newValue}
}

override var frame: CGRect {
didSet {
let size = frame.size
isHorizontal = size.width > size.height
}
}

override func draw(_ dirtyRect: NSRect) {
_bkgrColour.setFill()
dirtyRect.fill()
self.drawKnob()
}


override func drawKnob() {
_knobColour.setFill()

let dx, dy: CGFloat
if isHorizontal {
dx = 0; dy = 3
} else {
dx = 3; dy = 0
}

let frame = rect(for: .knob).insetBy(dx: dx, dy: dy)
NSBezierPath.init(roundedRect: frame, xRadius: 3, yRadius: 3).fill()
}

}

关于objective-c - 如何改变 NSScroller 的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22622219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com