iOS HowTo 中带有 PickerStyle .menu 的 SwiftUI 选择器标签

rot*_*ion 7 menu picker ios swift swiftui

由于某种原因,Apple 决定放弃对 Pickers 的 Label 支持(在 iOS15 和 iOS16 中测试)

例如:

Picker(selection: $gender,
                   label:
                    "Select your gender"
                   , content: {
                            Text(Gender.male.rawValue).tag(Gender.male)
                            Text(Gender.female.rawValue).tag(Gender.female)
                            Text(Gender.nobinary.rawValue).tag(Gender.nobinary)
            }).pickerStyle(.automatic)
                    .font(.largeTitle)
                    .accentColor(.white)
Run Code Online (Sandbox Code Playgroud)

忽略标签视图。

那么如何解决呢?

rot*_*ion 16

要在没有自定义视图的情况下添加开箱即用的标签视图,必须在嵌入的菜单视图中使用选取器。现在,人们可以在菜单标签视图上使用修饰符,甚至可以对所选文本使用逻辑。

Menu {
    Picker(selection: $gender,
        label: EmptyView(),
        content: {
            Text(Gender.male.rawValue).tag(Gender.male)
            Text(Gender.female.rawValue).tag(Gender.female)
            Text(Gender.nobinary.rawValue).tag(Gender.nobinary)
        }).pickerStyle(.automatic)
           .accentColor(.white)
    } label: {
        Text(gender == .unselected ? "Select your gender" : gender.rawValue)
            .font(.title3)
            .frame(maxWidth: .infinity)
            .frame(height: 55)
            .background(.white)
            .cornerRadius(10)
            .accentColor(.pink)
}
Run Code Online (Sandbox Code Playgroud)