NSColorWell 是 macOS AppKit 框架中的一个颜色选择控件,允许用户在 UI 中点击弹出颜色选择器(NSColorPanel)并选择颜色,常用于设置主题色、画笔颜色、背景色等场景。
如果使用SwiftUI、并且对于颜色的需求比较简单,可以考虑使用《SwiftUI颜色控件ColorPicker》替代NSColorWell。
在 macOS 应用中,显示为:

基本用法
1、创建并添加到视图中:
let colorWell = NSColorWell(frame: NSRect(x: 20, y: 20, width: 50, height: 25))
colorWell.color = NSColor.systemBlue // 初始颜色
view.addSubview(colorWell)
2、获取用户选择的颜色
let selectedColor = colorWell.color
可以通过按钮触发、绑定 KVO,或响应事件获取颜色变化。
3、设置颜色
colorWell.color = NSColor.red
这会改变颜色井当前显示的颜色。
常用属性
1、color:NSColor类型,当前颜色。
2、isEnabled:Bool类型,是否允许用户点击更改颜色。
3、isBordered:Bool类型,是否显示边框。
4、isActive:Bool类型,是否激活颜色面板(只读)。
使用场景
1、自定义主题色选择:“选择主色调”。
2、改变绘图颜色:“设置画笔颜色”。
3、设置背景色:“设置背景”。
其他颜色控件
1、NSColorWell:用户点击弹出颜色面板选择颜色。
2、NSColorPanel:系统颜色选择器(浮动面板)。
3、NSColorPicker:自定义颜色拾取器插件。
实际应用(SwiftUI)
在SwiftUI中,可以通过NSViewRepresentable桥接控制器,实现NSColorWell的调用:
struct ColorWellRepresentable: NSViewRepresentable {
@Binding var selectedColor: NSColor
func makeCoordinator() -> changeColor {
changeColor(color: $selectedColor)
}
func makeNSView(context: Context) -> NSColorWell {
let colorWell = NSColorWell()
colorWell.color = selectedColor
colorWell.target = context.coordinator as AnyObject
colorWell.action = #selector(changeColor.colorChanged(_:))
return colorWell
}
func updateNSView(_ nsView: NSColorWell, context: Context) {
if nsView.color != selectedColor {
nsView.color = selectedColor
}
}
class changeColor {
var selectedColor: Binding<NSColor>
init(color: Binding<NSColor>) {
self.selectedColor = color
}
@objc func colorChanged(_ sender: NSColorWell) {
selectedColor.wrappedValue = sender.color
}
}
}
最后,实现的效果为,当点击视图的颜色选择器,会弹出对应的颜色选取面板。
从而实现,修改当前选取的颜色。

总结
NSColorWell控件,可以显示并选择颜色,颜色来源为系统颜色面板。
可以添加到视图中并读取颜色,用户可以实现颜色选取。
相关文章
1、macOS颜色NSColor:https://fangjunyu.com/2025/07/01/macos%e9%a2%9c%e8%89%b2nscolor/
2、macOS颜色选择面板NSColorPanel:https://fangjunyu.com/2025/07/02/macos%e9%a2%9c%e8%89%b2%e9%80%89%e6%8b%a9%e9%9d%a2%e6%9d%bfnscolorpanel/
3、SwiftUI颜色控件ColorPicker: https://fangjunyu.com/2025/07/02/swiftui%e9%a2%9c%e8%89%b2%e6%8e%a7%e4%bb%b6colorpicker/
4、macOS颜色面板插件接口NSColorPicker:https://fangjunyu.com/2025/07/02/macos%e9%a2%9c%e8%89%b2%e9%9d%a2%e6%9d%bf%e6%8f%92%e4%bb%b6%e6%8e%a5%e5%8f%a3nscolorpicker/