代码之家  ›  专栏  ›  技术社区  ›  Steven-Carrot

自定义选取器的出现会导致其他视图重新排列

  •  1
  • Steven-Carrot  · 技术社区  · 2 年前

    problem here

     VStack {
                Text("\(selectedElement) is selected")
                if showPicker {
                    CustomPicker(pickerData: ["Jonathan", "Cilan", "Wanda", "Depp", "Willy"], width: 400, selectedElement: $selectedElement)
                }
                Button("Show picker") {
                    showPicker.toggle()
                }
                
    
            }
    
     struct CustomPicker: View {
     var pickerData: [String]
     var width: CGFloat
     @Binding var selectedElement: String
     var body: some View {
      ZStack {
          VStack(alignment: .leading) {
              ForEach(pickerData, id: \.self) { data in
                  Button {
                      selectedElement = data
                  } label: {
                      Text("\(data)")
                          .padding(5)
                          .foregroundColor(.black)
                  }
              }
          }
          .padding(.vertical, 5)
      }
      .background(RoundedRectangle(cornerRadius: 10).fill(.blue))
      .frame(width: width, height: 18.0 * CGFloat(pickerData.count))
      }
      }
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   tail    2 年前

    尝试使用 CustomPicker overlay 相反

     Button("Show picker") {
         showPicker.toggle()
     }
     .overlay {
        CustomerPicker() //this part
     }