SwiftUI |选择器-更改选定的行颜色

时间:2020-10-25 13:02:03

标签: ios swift swiftui

我要更改所选行的颜色。

您可能会看到,默认情况下,它的颜色是浅灰色。

我不知道该怎么做,因为我根本找不到访问该行的方法。 有什么办法吗?

演示代码:

struct ContentView: View {
    
    var data = Array(0...20).map { "\($0)" }
    @State private var selected = 0

    
    var body: some View {
        VStack {
            Picker("", selection: $selected) {
                ForEach(0 ..< data.count) {
                    Text(data[$0])
                }
            }
        }
    }
}

UIKit的答案也将受到欢迎,因为我也没有找到答案。

谢谢!

1 个答案:

答案 0 :(得分:1)

这将是一种对其进行自定义的方法。 解决方法是,只需将RoundedRectangle放置在您选择的颜色的正下方即可。

这不是完美的,因为默认的灰色不透明叠加层位于该颜色的顶部,并且必须根据框架确定约束条件。

struct ContentView: View {
    
    var data = Array(0...20).map { "\($0)" }
    @State private var selected = 0

    
    var body: some View {
        ZStack {
            RoundedRectangle(cornerRadius: 5)
                .frame(width: UIScreen.main.bounds.size.width-18, height: 32)
                .foregroundColor(.green)
            
            Picker("", selection: $selected) {
                ForEach(0 ..< data.count) {
                    Text(data[$0])
                }
            }
        }
    }
}