如何在SwiftUI中更改DatePicker的文本颜色?

时间:2020-03-06 08:29:50

标签: datepicker swiftui

我看到了this question,但是它在SwiftUI中不起作用。我使用了.forgroundColor和.accentColor,但是它们不会更改文本的颜色。

7 个答案:

答案 0 :(得分:6)

尝试一下:

var body: some View {
        Group {

            DatePicker(selection: $selected) {
                Text("Date")
            }

        .colorInvert()
            .colorMultiply(Color.blue)
        }
    }

enter image description here

答案 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)
  }
}