छवि और पाठ के साथ SwiftUI फॉर्म पिकर
Dec 09 2020
मेरे पास मेरे ऐप में एक सेटिंग दृश्य है जो इस कोड के साथ पिकर से एक मान का चयन करने का विकल्प प्रदान करता है:
var body: some View {
NavigationView {
Form {
Section(header: Text("Widget Settings")) {
Picker(selection: $chosenMediumType, label: Text("Medium Widget"), content: { VStack { Image(uiImage: UIImage(systemName: "sun.min")!).resizable().frame(width: 20, height: 20, alignment: .center) Text("Sun") }.tag(0) VStack { Image(uiImage: UIImage(systemName: "sunset")!).resizable().frame(width: 20, height: 20, alignment: .center) Text("Sunset") }.tag(1) VStack { Image(uiImage: UIImage(systemName: "moon")!).resizable().frame(width: 20, height: 20, alignment: .center) Text("Moon") }.tag(2) }) .onChange(of: chosenMediumType) { print("Selected tag: \($0)") }
}
}
.navigationBarTitle("Settings")
}
}
जब मैं पिकर पंक्ति को क्लिक करता हूं तो यह पिकर पेज को खोलता है और मैं प्रत्येक पंक्ति को छवि और पाठ के साथ देख सकता हूं, लेकिन सेटिंग्स में, यह पंक्ति को छवि के अनुसार बड़ा बनाता है:

पिकर दृश्य में केवल सेटिंग पृष्ठ में पाठ और छवि + पाठ का उपयोग करना संभव है?
जवाब
OguzYuksel Dec 13 2020 at 19:29
यह देखने के लिए कि मैं आपको वह तरीका दिखाना चाहता हूं जो आप कर सकते हैं,
बस पूरे पिकर को छिपाएं, यह बिना पिकर के अंदर रहेगा और Hlayack को ओवरले करेगा, स्टैक के अंदर एक स्विच केस बनाता है या यदि आप चाहते हैं तो
struct ContentView: View {
@State private var chosenMediumType = 0
var body: some View {
NavigationView {
Form {
Section(header: Text("Widget Settings")) {
Picker(selection: $chosenMediumType, label: Text("")
, content: {
VStack {
Image(uiImage: UIImage(systemName: "sun.min")!).resizable().frame(width: 20, height: 20, alignment: .center)
Text("Sun")
}.tag(0)
VStack {
Image(uiImage: UIImage(systemName: "sunset")!).resizable().frame(width: 20, height: 20, alignment: .center)
Text("Sunset")
}.tag(1)
VStack {
Image(uiImage: UIImage(systemName: "moon")!).resizable().frame(width: 20, height: 20, alignment: .center)
Text("Moon")
}.tag(2)
})
.hidden()
.overlay(
HStack(alignment: .center, spacing: nil, content: {
Text("Medium Widget")
Spacer()
switch chosenMediumType {
case 1:
Text("Sunset")
.foregroundColor(.gray)
case 2:
Text("Moon")
.foregroundColor(.gray)
default:
Text("Sun")
.foregroundColor(.gray)
}
})
)
.frame(height: 30)
}
}
.navigationBarTitle("Settings")
}
}
}