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

问题描述 投票:0回答:8

我看到了这个问题,但它在 SwiftUI 中不起作用。

更改日期选择器的文本颜色

我尝试了

.forgroundColor
.accentColor
,但它们不会改变文本的颜色。

datepicker swiftui
8个回答
15
投票

使用

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

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

13
投票

我只是简单地设置了accentColor就可以了。

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

9
投票

试试这个:

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


5
投票

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

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

3
投票

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

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)

2
投票

我发现将此修改器应用于

DatePicker
会更干净:

强制颜色为白色

 .environment(\.colorScheme, .dark)

强制颜色变暗

 .environment(\.colorScheme, .light)

0
投票
DatePicker("DatePicker", selection: self.$date, displayedComponents: .hourAndMinute)
              .labelsHidden()
              .colorMultiply(Color.white)
              .colorInvert()

0
投票

.accentColor() 将在不久的将来被弃用。

.colorInvert() 一旦点击就会停止工作。

现在我使用:

.preferredColorScheme(.dark)
.tint(baby.color.bgColor)
.colorMultiply(baby.color.bgColor)

但在某些情况下使用 .preferredColorScheme(.dark) 会影响所有视图色调,具体取决于您使用的颜色。

© www.soinside.com 2019 - 2024. All rights reserved.