如何增加Picker选择宽度?

问题描述 投票:0回答:1

如何调整用户点击选择器时显示的列表的宽度?请注意,我不需要调整选择器本身的宽度 - 只需调整它上面显示的内容。

例如,考虑一个显示可用 iPad 语音的选择器:

ForEach(AVSpeechSynthesisVoice.speechVoices(), id: \.identifier) { voice in
    Text("\(Locale.current.localizedString(forIdentifier: voice.language) ?? voice.language) – \(voice.name)").tag(voice)
}

如果点击选择器,您会看到一个包含以下内容的列表:

screenshot

尽管 iPad 有很多可用的屏幕宽度,但显示的列表非常窄,以至于许多选项都排成两行。我怎样才能调整这个宽度?

swiftui swiftui-picker
1个回答
0
投票

代码示例不应换行。任何换行都应该是由代码中的其他内容引起的,可能父视图具有固定宽度,如下所示的代码。

  VStack{
        ScrollView{
            ForEach(AVSpeechSynthesisVoice.speechVoices(), id: \.identifier) { voice in
               
                    Text("\(Locale.current.localizedString(forIdentifier: voice.language) ?? voice.language) – \(voice.name)").tag(voice)
                       
                        .frame(maxWidth: /*@START_MENU_TOKEN@*/.infinity/*@END_MENU_TOKEN@*/, alignment: .leading)
                        .padding(.horizontal)
                        .padding(.top)
                
            }
        }
    }.frame(width: 200)
  • 我在下面编写了相同的代码,但没有固定宽度。

    VStack{ 滚动视图{ ForEach(AVSpeechSynthesisVoice.speechVoices(), id: .identifier) { 语音输入

                      Text("\(Locale.current.localizedString(forIdentifier: voice.language) ?? voice.language) – \(voice.name)").tag(voice)
    
                          .frame(maxWidth: /*@START_MENU_TOKEN@*/.infinity/*@END_MENU_TOKEN@*/, alignment: .leading)
                          .padding(.horizontal)
                          .padding(.top)
    
              }
          }
      }
    

Ipad pro 11 英寸,第 4 代屏幕截图

© www.soinside.com 2019 - 2024. All rights reserved.