由于一些设计问题以及代码仓库日渐膨胀,这个包已被弃用并替换,并且该代码仓库将被存档。请使用它的后继者 ColorWellKit 来替代。
一个通用的替代品,用于代替 Cocoa 中的 NSColorWell
和 SwiftUI 中的 ColorPicker
。
ColorWell 的设计旨在模仿 macOS 13 Ventura 中新的颜色选择器外观和行为,为那些希望在旧操作系统上使用新设计的用户而设计。虽然目标是使 ColorWell 的外观和行为与 Apple 的设计类似,但它不是一个精确的克隆。从系统颜色的处理方式到阴影的大小,存在一些细微的设计差异。但是,在实践中,几乎没有明显的差异。
将以下依赖项添加到你的 Package.swift
文件中
.package(url: "https://github.com/jordanbaird/ColorWell", from: "0.2.2")
创建一个 ColorWellView
并将其添加到你的视图层级中。有各种各样的初始化器以及一些修饰符可供选择,允许你设置颜色选择器的颜色、标签和动作。
import SwiftUI
import ColorWell
struct ContentView: View {
@Binding var fontColor: Color
var body: some View {
VStack {
ColorWellView("Font Color", color: fontColor, action: updateFontColor)
.colorWellStyle(.expanded)
MyCustomTextEditor(fontColor: $fontColor)
}
}
private func updateFontColor(_ color: Color) {
fontColor = color
}
}
使用可用的初始化器之一创建一个 ColorWell
。使用 onColorChange(perform:)
方法观察颜色变化。
import Cocoa
import ColorWell
class ContentViewController: NSViewController {
let colorWell: ColorWell
let textEditor: MyCustomNSTextEditor
init(fontColor: NSColor) {
self.colorWell = ColorWell(color: fontColor)
self.textEditor = MyCustomNSTextEditor(fontColor: fontColor)
super.init(nibName: "ContentView", bundle: Bundle(for: Self.self))
// Set the style
colorWell.style = .expanded
// Add a change handler
colorWell.onColorChange { newColor in
self.textEditor.fontColor = newColor
}
}
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(colorWell)
view.addSubview(textEditor)
// Layout the views, perform setup work, etc.
}
}
ColorWell 在 MIT 许可协议下可用。