【问题标题】:How to change DatePicker's texts color in SwiftUI?如何在 SwiftUI 中更改 DatePicker 文本颜色?
【发布时间】:2020-03-06 08:29:50
【问题描述】:

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

【问题讨论】:

    标签: datepicker swiftui


    【解决方案1】:

    我只是简单地设置了accentColor,它就可以工作了。

    @State private var date = Date()
    DatePicker("Select a date",
               selection: $date, in: ...Date(), 
               displayedComponents: .date)
            .labelsHidden()
            .accentColor(.orange)
    

    【讨论】:

    【解决方案2】:

    试试这个:

    var body: some View {
            Group {
    
                DatePicker(selection: $selected) {
                    Text("Date")
                }
    
            .colorInvert()
                .colorMultiply(Color.blue)
            }
        }
    

    【讨论】:

    • 请注意它可能会改变某些控件的功能。尝试在 Toggle 上应用相同的技术,它停止工作......
    • @UserWithWeiredNumber。没有人说它将适用于所有控件。没有人说——每个开发者都知道——苹果可以改变一些事情,然后我们也必须改变一些事情。但有些人只看到“担心”。他要求更改日期选择器的颜色——他现在正在寻找解决方案——而不是 100 年后。这就是我的解决方案所提供的。不多不少。
    • 我已经选择你的答案很有价值:-),通知人们仍然是个好主意。特别是因为 Toggle 可能在您的 UI 中更深。你可以自己试一试......警告更好
    • 我看不到谁标记了我的答案... ;)
    【解决方案3】:

    使用.colorInvert() 和.colorMultiply(.white) 会将文本颜色更改为白色,但在设备处于深色模式时不起作用。相反,试试这个:

    DatePicker("Date", selection: $selection)
        .colorScheme(.dark) // or .light to get black text
    

    【讨论】:

    • 这是目前最好的答案,但希望苹果以后能给我们改变文字颜色的方法
    【解决方案4】:

    如果您使用背景颜色,您可以这样做以使文本在浅色或深色模式下显示为白色

    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()
            }
        }
    }
    

    【讨论】:

      【解决方案5】:
      DatePicker("DatePicker", selection: self.$date, displayedComponents: .hourAndMinute)
                    .labelsHidden()
                    .colorMultiply(Color.white)
                    .colorInvert()
      

      【讨论】:

      • 点评来源: 您好,请不要只用源代码回答。尝试对您的解决方案如何工作提供一个很好的描述。请参阅:How do I write a good answer?。谢谢
      【解决方案6】:

      我为浅色模式和深色模式的自定义文本颜色使用扩展。

      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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-05
        • 2019-02-17
        • 2021-09-18
        • 1970-01-01
        • 2019-11-05
        • 2017-07-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多