mac颜色选择控件NSColorWell
mac颜色选择控件NSColorWell

mac颜色选择控件NSColorWell

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/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注