MacOS - NSColorPanel选择颜色
预览
NSColorPanel
是应用程序中选择颜色的标准用户界面,提供了许多标准颜色选择模式,使用NSColorPickingDefault
和NSColorPickingCustom
协议,允许应用程序添加自己的颜色选择模式。NSColorPanel
继承自NSWindow
,使用orderFront
调出。
- 执行如下代码,简单调出颜色面板:
let clr = NSColorPanel.shared
clr.orderFront(nil)
- 运行如下:
创建及使用
创建颜色面板分为以下步骤:
- 获取共享的颜色面板对象
let colorpl = NSColorPanel.shared
- 设置颜色选择器模式
//NSColorPanel.setPickerMask(.grayModeMask) //确定NSColorPanel中可用的颜色选择模式。
//NSColorPanel.setPickerMode(.gray) //指定颜色面板的初始选取器。
colorpl.mode = .RGB //指定颜色面板的初始选择模式。
- 配置颜色面板
colorpl.color = .red //初始化选中颜色值
colorpl.isContinuous = true //默认true,是否连续触发操作
colorpl.setAction(#selector(didChangeColor)) //颜色值变化触发方法
colorpl.setTarget(self)
colorpl.showsAlpha = true //默认false,是否显示alpha值和不透明度滑块的布尔值
//accessoryView
let view = NSView.init(frame: NSRect(x: 0, y: 0, width: 100, height: 200))
view.wantsLayer = true
view.layer?.backgroundColor = NSColor.red.cgColor
colorpl.accessoryView = view
- 弹出颜色面板
colorpl.orderFront(nil) //弹出颜色选择面板
- 执行如下代码:
@IBAction func selColor(_ sender: Any) {
//选择颜色
//1.获取共享的颜色面板对象
let colorpl = NSColorPanel.shared
//2.设置颜色选择器模式
//NSColorPanel.setPickerMask(.grayModeMask) //确定NSColorPanel中可用的颜色选择模式。
//NSColorPanel.setPickerMode(.gray) //指定颜色面板的初始选取器。
colorpl.mode = .RGB //指定颜色面板的初始选择模式。
//3.配置颜色面板
colorpl.color = .red //初始化选中颜色值
colorpl.isContinuous = true //默认true,是否连续触发操作
colorpl.setAction(#selector(didChangeColor)) //颜色值变化触发方法
colorpl.setTarget(self)
colorpl.showsAlpha = true //默认false,是否显示alpha值和不透明度滑块的布尔值
//accessoryView
let view = NSView.init(frame: NSRect(x: 0, y: 0, width: 100, height: 200))
view.wantsLayer = true
view.layer?.backgroundColor = NSColor.red.cgColor
colorpl.accessoryView = view
//4.弹出颜色面板
colorpl.orderFront(nil) //弹出颜色选择面板
}
//颜色值变化触发方法
@objc func didChangeColor(sender: NSColorPanel) {
print(sender.mode, "===", sender.color, "===", sender.alpha)
}
- 运行结果
此外,若需要添加或删除可选颜色,可通过attachColorList
与detachColorList
方法来管理颜色列表。