SwiftUI - 如何更改嵌套在表单中的选择器(Picker)的勾选标记颜色

4

我想要更改SwiftUI中嵌套在表单中的选择器中使用的复选标记的颜色。我尝试了以下代码:

UINavigationBar.appearance().tintColor = .black

但那只改变了“< Back”按钮的颜色。

struct ContentView: View {

    @State private var selectedMode = 0
    private var modes = ["#1", "#2"]


    var body: some View {
        NavigationView {
            Form {
                Section(header:Text("").font(.title)
                    .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center)
                ){
                    Picker(selection: $selectedMode, label: Text("Modes")) {
                        ForEach(0 ..< modes.count, id: \.self) {
                            Text(self.modes[$0])
                                .foregroundColor(Color.red)
                        }
                    }
                }
            }
        }
    }
}

enter image description here

1个回答

8

这是(使用Xcode 11.4测试通过)

演示

var body: some View {
    NavigationView {
        Form {
            Section(header:Text("").font(.title)
                .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center)
            ){
                Picker(selection: $selectedMode, label: Text("Modes")) {
                    ForEach(0 ..< modes.count, id: \.self) {
                        Text(self.modes[$0])
                            .foregroundColor(Color.red)
                    }
                }
            }
        }
    }.accentColor(Color.black)   // << fix !!
}

注意:.accentColor适用于所有NavigationView控件,因此不需要UINavigationBar.appearance().tintColor = .black


这个可以运行,但是accentColor已经被弃用了,而tintColor并不起作用。 - Maximilian Litteral
不要关心那个 until 修饰符消失的问题(这不会很快发生),在此之前,我认为他们会修复 .tint 修饰符(提交另一个反馈,以便加快修复速度)。 - Asperi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接