【发布时间】:2021-11-13 02:10:46
【问题描述】:
我正在使用 SwiftUI 构建一个 Picker。
现在我想为每个选择添加一个图标和文本。所以它应该看起来像这样:
这可能吗?如果是怎么办?
或者Apples苹果人机界面指南根本不推荐它?
我已经尝试使用 HStack 将图像和文本包装在一起。
enum Category: String, CaseIterable, Identifiable {
case person
case more
var id: String { self.rawValue }
}
struct ContentView: View {
@State private var category = Category.person
var body: some View {
Picker("Category", selection: $category) {
HStack {
Image(systemName: "person")
Text("Person")
}.tag(Category.person)
HStack {
Image(systemName: "ellipsis.circle")
Text("More")
}.tag(Category.more)
}.pickerStyle(SegmentedPickerStyle())
.padding()
}
}
但框架将其分成四部分。
【问题讨论】:
-
如果没有Minimal Reproducible Example,就无法帮助您解决已尝试的问题。
-
似乎没有一种简单的方法可以做到这一点。无论如何,您不应该在此处真正混合图像+文本,它应该是其中之一,但不能两者兼而有之。
-
谁说这个问题应该被关闭?为什么?!
-
这似乎是一个简单的问题:只需放一个
Label而不是HStack... 但它不起作用?!我也尝试使用自定义LabelStyle... 但没有成功。似乎SegmentedPickerStyle只使用提供的两个视图之一。选择WheelPickerStyle将按预期显示标签。这绝对是分段选择器的问题。 -
根据Apple Human Interface Guidelines for segmented controls,绝对不希望同时拥有文本和图像。所以这不是 SwiftUI 的错误,而是一个特性:你不能做错:-)