【发布时间】:2022-11-30 21:19:19
【问题描述】:
有没有一种好方法可以隐藏选择器默认样式中的上下箭头。我用的是ios 16,老版本好像没有这样的箭头。
还有,有没有设置把picker的背景设置成和图片中datepicker一样的样式,不用手动设置background和radious?
我一直在为这个小功能苦苦挣扎,并尝试谷歌搜索了几个小时,但没有成功。任何想法将不胜感激
【问题讨论】:
-
您,它是具有标准外观的内置视图。你必须创造你自己的。你可以使用
Menu
有没有一种好方法可以隐藏选择器默认样式中的上下箭头。我用的是ios 16,老版本好像没有这样的箭头。
还有,有没有设置把picker的背景设置成和图片中datepicker一样的样式,不用手动设置background和radious?
我一直在为这个小功能苦苦挣扎,并尝试谷歌搜索了几个小时,但没有成功。任何想法将不胜感激
【问题讨论】:
Menu
如果您只有几个选项,建议的菜单解决方案效果很好。我在使用 Menu 解决方案时遇到的问题是,如果有很多选项,Menu 不会像 Picker 那样自动滚动到当前选择的选项。
我使用的解决方案是使用 ZStack 在自定义视图(我的“标签”)之上放置一个不透明的选择器。将 Picker 上的不透明度修改器设置为 0.025 使其在您的设备上不可见,但当您点击它时它仍会触发。
通过这种方式,您可以获得选择器的所有本机功能(包括滚动到所选选项),并且您可以使标签看起来像您想要的任何方式,而无需创建您自己的自定义选择器。
这是代码:
ZStack {
// Custom picker label
Text("(value)")
.font(.title)
.foregroundColor(.blue)
.styleDataEntry(colorScheme: colorScheme) // a custom formatter View extension
// Invisible picker
Picker("", selection: $value) {
ForEach(0 ..< 200) { option in
Text("(option)").tag(option)
}
}
.pickerStyle(.menu)
.opacity(0.025)
}
【讨论】: