我已经搜索了如何在 SwiftUI 中设置 WheelPickerStyle-pickers 样式的解决方案,特别是如果您想并排使用多个选择器。最后,我通过在各个选择器上使用填充和剪切来消除选择器之间的间隙。我不确定这是否是使用某些任意填充的好解决方案(将来可能会中断,或者如果用户使用更大的字体)。
现在我的第二个问题,也是这篇文章的主要问题。我可以更改所选项目的颜色/不透明度吗?我在项目中使用除黑/白以外的背景颜色,并且“选择栏”几乎不可见。
编辑:我发现我可以在每个选择器上使用 .contrast-modifier,但即使具有很高的值,也不足以满足我的口味。
import SwiftUI
struct ContentView: View {
@State private var hours = 0
@State private var minutes = 0
@State private var seconds = 0
var body: some View {
HStack(spacing: 0) {
Picker("Hours", selection: $hours) {
ForEach(0 ..< 24) { hour in
Text("\(hour)")
}
}
.pickerStyle(.wheel)
.padding(.trailing, -15)
.clipped()
Picker("Minutes", selection: $minutes) {
ForEach(0 ..< 60) { minute in
Text("\(minute)")
}
}
.pickerStyle(.wheel)
.padding(.horizontal, -15)
.clipped()
Picker("Seconds", selection: $seconds) {
ForEach(0 ..< 60) { second in
Text("\(second)")
}
}
.pickerStyle(.wheel)
.padding(.leading, -15)
.clipped()
}
.padding()
.background(.blue.gradient)
}
}
#Preview {
ContentView()
}
您可以使用 SwiftUI-Introspect 库:
Picker("", selection: $selector) {
// your items
}
.pickerStyle(.wheel)
.introspect(.picker(style: .wheel), on: .iOS(.v13, .v14, .v15, .v16, .v17)) { picker in
picker.subviews[1].backgroundColor = UIColor.clear // or any color you want
}
您可以在这里找到该库:SwiftUI-Introspect