SwiftUI/macOS:没有背景字段的 DatePicker

Chr*_*isR 5 macos datepicker swiftui

如何消除DatePickermacOS 中字段的阴影背景(!)?
.textFieldStyle.background没有效果。

我尝试过这个:Changing TextEditor background color in SwiftUI for macOS但似乎仅适用于 TextField、TextEditor。是否还有另一个可以设置的 NSView 属性?

        DatePicker("Start",
                   selection: $newDate,
                   displayedComponents: [.date])
            .datePickerStyle(.field)
//          .textFieldStyle(.plain)
//          .background(.clear)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Asp*_*eri 5

这是可表示包装器方法的简化演示

使用 Xcode 13.2 / macOS 12.1 进行测试

在此输入图像描述

struct DemoView: View {
    @State private var newDate: Date = Date()

    var body: some View {
        VStack {
            Text("Selected: \(newDate)")
            MyDatePicker(selection: $newDate)
        }
    }
}

struct MyDatePicker: NSViewRepresentable {
    @Binding var selection: Date

    func makeNSView(context: Context) -> NSDatePicker {
        let picker = NSDatePicker()
        picker.isBordered = false
        picker.datePickerStyle = .textField
        picker.action = #selector(Coordinator.onValueChange(_:))
        picker.target = context.coordinator
        return picker
    }

    func updateNSView(_ picker: NSDatePicker, context: Context) {
        picker.dateValue = selection
    }

    func makeCoordinator() -> Coordinator {
        Coordinator(owner: self)
    }

    class Coordinator: NSObject {
        private let owner: MyDatePicker
        init(owner: MyDatePicker) {
            self.owner = owner
        }

        @objc func onValueChange(_ sender: Any?) {
            if let picker = sender as? NSDatePicker {
                owner.selection = picker.dateValue
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)