【发布时间】:2020-03-06 08:29:50
【问题描述】:
我看到了this question,但它在 SwiftUI 中不起作用。我使用了 .forgroundColor 和 .accentColor 但它们不会改变文本的颜色。
【问题讨论】:
标签: datepicker swiftui
我看到了this question,但它在 SwiftUI 中不起作用。我使用了 .forgroundColor 和 .accentColor 但它们不会改变文本的颜色。
【问题讨论】:
标签: datepicker swiftui
我只是简单地设置了accentColor,它就可以工作了。
@State private var date = Date()
DatePicker("Select a date",
selection: $date, in: ...Date(),
displayedComponents: .date)
.labelsHidden()
.accentColor(.orange)
【讨论】:
【讨论】:
使用.colorInvert() 和.colorMultiply(.white) 会将文本颜色更改为白色,但在设备处于深色模式时不起作用。相反,试试这个:
DatePicker("Date", selection: $selection)
.colorScheme(.dark) // or .light to get black text
【讨论】:
如果您使用背景颜色,您可以这样做以使文本在浅色或深色模式下显示为白色
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()
}
}
}
【讨论】:
DatePicker("DatePicker", selection: self.$date, displayedComponents: .hourAndMinute)
.labelsHidden()
.colorMultiply(Color.white)
.colorInvert()
【讨论】:
我为浅色模式和深色模式的自定义文本颜色使用扩展。
extension View {
@ViewBuilder func changeTextColor(_ color: Color) -> some View {
if UITraitCollection.current.userInterfaceStyle == .light {
self.colorInvert().colorMultiply(color)
} else {
self.colorMultiply(color)
}
}
}
示例如下。
DatePicker("Date", selection: $selection)
.labelsHidden()
.changeTextColor(.green)
【讨论】: