我看到了this question,但是它在SwiftUI中不起作用。我使用了.forgroundColor和.accentColor,但是它们不会更改文本的颜色。
答案 0 :(得分:6)
尝试一下:
var body: some View {
Group {
DatePicker(selection: $selected) {
Text("Date")
}
.colorInvert()
.colorMultiply(Color.blue)
}
}
答案 1 :(得分:4)
使用.colorInvert()
和.colorMultiply(.white)
会将文本颜色更改为白色,但在设备处于黑暗模式时将无法使用。相反,请尝试以下操作:
DatePicker("Date", selection: $selection)
.colorScheme(.dark) // or .light to get black text
答案 2 :(得分:1)
我只需简单地设置accentColor即可。
@State private var date = Date()
DatePicker("Select a date",
selection: $date, in: ...Date(),
displayedComponents: .date)
.labelsHidden()
.accentColor(.orange)
答案 3 :(得分:0)
如果您使用背景色,则可以执行以下操作以使文本在浅色或深色模式下显示为白色
struct PickerDate: View {
@Environment(\.colorScheme) var colorScheme
@State var date: Date
var body: some View {
VStack {
DatePicker("Record Date", selection: $date, in: ...Date(), displayedComponents: .date)
.labelsHidden()
.colorMultiply(colorScheme == .dark ? .black : .white)
.colorInvert()
}
}
}
答案 4 :(得分:0)
DatePicker("DatePicker", selection: self.$date, displayedComponents: .hourAndMinute)
.labelsHidden()
.colorMultiply(Color.white)
.colorInvert()
答案 5 :(得分:0)
我将扩展名用于明暗模式的自定义文本颜色。
extension View {
@ViewBuilder func exChangeTextColor(_ color: Color) -> some View {
if UITraitCollection.current.userInterfaceStyle == .light {
self.colorInvert().colorMultiply(color)
} else {
self.colorMultiply(color)
}
return self
}
}
和示例如下。
DatePicker("Date", selection: $selection)
.labelsHidden()
.exChangeTextColor(textColor)
答案 6 :(得分:0)
也许Xcode 12更改了colorMultipy()的规范。
示例代码https://stackoverflow.com/a/63667802/14307637使
如下所示,Xcode12上出现了两条警告消息,并且程序重复了选择器。
“ colorMultiply”的调用结果未使用
函数构建器“ ViewBuilder”的应用被显式“ return”语句禁用
修改后的代码如下。
extension View {
@ViewBuilder func exChangeTextColor(_ color: Color) -> some View {
if UITraitCollection.current.userInterfaceStyle == .light {
self.colorInvert().colorMultiply(color)
} else {
self.colorMultiply(color)
}
}