आइए जानें कि SwiftUI में HStack, VStack और ZStack क्या हैं — सभी Apple प्लेटफ़ॉर्म पर यूज़र इंटरफ़ेस बनाने के लिए कंटेनर स्टैक। HStack एलिमेंट्स को क्षैतिज रूप से, VStack लंबवत रूप से, और ZStack गहराई में (ओवरले) व्यवस्थित करता है। स्टैक SwiftUI की नींव हैं: कोई भी व्यू alignment और spacing पैरामीटर के साथ नेस्टेड स्टैक से बनाया जाता है। Apple WWDC 2024 के अनुसार, SwiftUI ऐप्स में 90% से अधिक स्क्रीन इन तीनों स्टैक के संयोजन का उपयोग करती हैं।
मुख्य बातें
HStack (Horizontal Stack) एक SwiftUI कंटेनर है जो चाइल्ड व्यू को क्षैतिज रेखा में व्यवस्थित करता है। प्रत्येक चाइल्ड एलिमेंट उतनी जगह लेता है जितनी उसे चाहिए, जब तक अन्यथा निर्दिष्ट न किया गया हो। HStack दो अनिवार्य पैरामीटर स्वीकार करता है: alignment (लंबवत एलाइनमेंट, डिफ़ॉल्ट .center) और spacing (एलिमेंट्स के बीच दूरी, डिफ़ॉल्ट nil — सिस्टम स्पेसिंग)। Apple Human Interface Guidelines (2025) के अनुसार, HStack बटन बार, इनपुट पंक्तियों और क्षैतिज आइकन सूचियों के लिए पसंदीदा विकल्प है।
HStack(alignment: .center, spacing: 16) {
Image("star")
.resizable()
.frame(width: 24, height: 24)
Text("पसंदीदा")
.font(.body)
Spacer()
Image("chevron.right")
.foregroundColor(.gray)
}
.padding()
इस उदाहरण में, HStack तीन एलिमेंट्स की एक पंक्ति बनाता है: एक आइकन, टेक्स्ट और एक तीर। Spacer() एलिमेंट्स को अलग धकेलता है — आइकन और टेक्स्ट बाएँ किनारे पर, और तीर दाएँ किनारे पर चिपक जाते हैं। Alignment .center तीनों एलिमेंट्स को लंबवत केंद्रीय अक्ष के साथ एलाइन करता है।
VStack (Vertical Stack) एक SwiftUI कंटेनर है जो चाइल्ड एलिमेंट्स को ऊपर से नीचे लंबवत रूप से व्यवस्थित करता है। HStack के समान, यह alignment (क्षैतिज एलाइनमेंट: .leading, .center, .trailing) और spacing स्वीकार करता है। VStack फ़ॉर्म, कार्ड, प्रोफ़ाइल और सेटिंग्स सूचियाँ बनाने की नींव है। Apple Docs (2025) के अनुसार, VStack LazyVStack के साथ SwiftUI में 85% लंबवत लेआउट परिदृश्यों को कवर करता है।
VStack(alignment: .leading, spacing: 8) {
Text("रेसिपी का नाम")
.font(.headline)
Text("तैयारी का समय: 30 मिनट")
.font(.subheadline)
.foregroundColor(.secondary)
HStack(spacing: 4) {
Image("star.fill")
.foregroundColor(.yellow)
Text("4.8")
}
}
VStack alignment .leading के साथ सभी पंक्तियों को बाएँ किनारे पर एलाइन करता है। VStack के अंदर, रेटिंग के लिए एक HStack नेस्टेड है — यह नेस्टेड स्टैक के माध्यम से जटिल लेआउट बनाने का एक विशिष्ट पैटर्न है। Spacing 8 टेक्स्ट लाइनों के बीच एक समान गैप बनाता है।
ZStack (Z-axis Stack) एक SwiftUI कंटेनर है जो चाइल्ड व्यू को गहराई अक्ष पर एक दूसरे के ऊपर स्तरित करता है। ZStack बॉडी में पहला एलिमेंट पृष्ठभूमि में खींचा जाता है, अंतिम — अग्रभूमि में। ZStack का उपयोग ऊपर टेक्स्ट वाली पृष्ठभूमि छवियों, कस्टम इंडिकेटर, ओवरले बटन और ट्रांज़िशन एनिमेशन के लिए किया जाता है। Apple Docs (2025) के अनुसार, ZStack डिफ़ॉल्ट रूप से सभी एलिमेंट्स को केंद्र में एलाइन करता है (alignment: .center) लेकिन किसी भी Alignment संयोजन का समर्थन करता है।
ZStack(alignment: .bottomLeading) {
Image("mountains")
.resizable()
.scaledToFill()
.frame(height: 200)
.clipped()
Color.black
.opacity(0.3)
Text("पहाड़ी परिदृश्य")
.font(.title)
.bold()
.foregroundColor(.white)
.padding()
}
इस उदाहरण में, ZStack तीन परतें रखता है: एक पहाड़ की छवि, एक अर्ध-पारदर्शी काला रंग मंद करने के लिए, और एक शीर्षक टेक्स्ट। Alignment .bottomLeading टेक्स्ट को निचले-बाएँ कोने में पिन करता है। मंद करना (Color.black.opacity(0.3)) छवि के उज्ज्वल क्षेत्रों पर टेक्स्ट पढ़ने में सुधार करता है।
स्टैक का चुनाव लेआउट दिशा पर निर्भर करता है: HStack — क्षैतिज व्यवस्था (बटन, इनपुट पंक्तियाँ), VStack — लंबवत व्यवस्था (फ़ॉर्म, कार्ड), ZStack — स्तरित करना (पृष्ठभूमि, ओवरले)। Apple Human Interface Guidelines (2025) के अनुसार, जटिल लेआउट के लिए स्टैक एक दूसरे के अंदर नेस्टेड होते हैं: एक बाहरी VStack के अंदर HStack और ZStack होते हैं। LazyHStack और LazyVStack बड़े संग्रहों के लिए आलसी संस्करण हैं।
| स्टैक | अक्ष | Default Alignment | कब उपयोग करें | आलसी संस्करण |
|---|---|---|---|---|
| HStack | क्षैतिज | .center | बटन बार, क्षैतिज सूचियाँ | LazyHStack |
| VStack | लंबवत | .center | फ़ॉर्म, प्रोफ़ाइल, कार्ड | LazyVStack |
| ZStack | गहराई (z) | .center | स्तरित करना, पृष्ठभूमि, ओवरले, बैज | कोई नहीं |
alignment और spacing पैरामीटर SwiftUI स्टैक में चाइल्ड एलिमेंट्स की स्थिति पर पूर्ण नियंत्रण देते हैं। HStack में Alignment विभिन्न ऊँचाई वाले एलिमेंट्स के लंबवत एलाइनमेंट को नियंत्रित करता है। VStack alignment क्षैतिज एलाइनमेंट को नियंत्रित करता है। Spacing स्टैक में सभी चाइल्ड एलिमेंट्स के बीच दूरी निर्धारित करता है। SwiftUI Lab (2025) के अनुसार, alignment मानक (.top, .center, .bottom) या AlignmentID के माध्यम से कस्टम हो सकता है।
HStack(alignment: .top, spacing: 12) {
Text("शीर्षक")
.font(.largeTitle)
VStack(alignment: .leading) {
Text("उपशीर्षक")
Text("अतिरिक्त टेक्स्ट के साथ विवरण")
.font(.caption)
.foregroundColor(.gray)
}
}
.padding()
यहाँ, alignment .top बड़े शीर्षक और नेस्टेड VStack को ऊपरी किनारे पर एलाइन करता है। Spacing 12 उनके बीच एक गैप बनाता है। alignment .leading वाला नेस्टेड VStack उपशीर्षक और विवरण को बाएँ किनारे पर एलाइन करता है। नेस्टेड स्टैक के अंदर विभिन्न alignments का संयोजन सटीक लेआउट नियंत्रण की अनुमति देता है।
वास्तविक इंटरफ़ेस नेस्टेड HStack, VStack और ZStack के संयोजन से बनाए जाते हैं। एक उत्पाद कार्ड एक विशिष्ट उदाहरण है: एक बाहरी VStack में एक छवि (ZStack ओवरले के साथ), एक शीर्षक (Text), एक रेटिंग (HStack) और एक मूल्य होता है। Apple Sample Projects (2025) के अनुसार, स्टैक की नेस्टिंग गहराई शायद ही कभी 4 स्तरों से अधिक होती है — गहरी नेस्टिंग कोड पठनीयता और प्रदर्शन को कम करती है।
VStack(spacing: 12) {
ZStack(alignment: .topTrailing) {
Image("product")
.resizable()
.scaledToFit()
Text("-20%")
.font(.caption)
.bold()
.foregroundColor(.white)
.padding(6)
.background(Color.red)
.cornerRadius(4)
}
Text("स्मार्टफ़ोन Model X")
.font(.headline)
HStack(spacing: 8) {
Text("$999")
.font(.title2)
.bold()
Spacer()
Image("star.fill")
.foregroundColor(.yellow)
Text("4.7")
}
}
.padding()
इस उदाहरण में, VStack एक ZStack (छवि डिस्काउंट बैज के साथ), एक उत्पाद नाम और एक HStack (मूल्य + रेटिंग) को जोड़ता है। ZStack «-20%» बैज को ऊपरी-दाएँ कोने में रखने के लिए alignment .topTrailing का उपयोग करता है। HStack में Spacer मूल्य को बाएँ किनारे और रेटिंग को दाएँ किनारे पर धकेलता है।
अक्सर पूछे जाने वाले प्रश्न
HStack एलिमेंट्स को क्षैतिज रूप से (बाएँ से दाएँ) व्यवस्थित करता है, जबकि VStack उन्हें लंबवत रूप से (ऊपर से नीचे) व्यवस्थित करता है। दोनों alignment और spacing सपोर्ट करते हैं। HStack लंबवत (top, center, bottom) एलाइन करता है, VStack क्षैतिज (leading, center, trailing) एलाइन करता है। चुनाव लेआउट दिशा पर निर्भर करता है: बटन पंक्तियों के लिए HStack और फ़ॉर्म के लिए VStack का उपयोग करें।
ZStack और overlay स्तरित करने के अलग-अलग तरीके हैं। ZStack सभी चाइल्ड एलिमेंट्स को लेआउट के समान भागों के रूप में जोड़ता है। Overlay एकल व्यू से जुड़ता है और उसके साथ फैलता है। SwiftUI Lab (2025) के अनुसार, overlay एकल व्यू के ऊपर छोटे एलिमेंट्स (बैज, आइकन) के लिए बेहतर है, जबकि ZStack पूर्ण बहु-घटक ओवरले के लिए है।
HStack के लिए .frame(maxWidth: .infinity) मॉडिफ़ायर या VStack के लिए .frame(maxHeight: .infinity) का उपयोग करें। HStack में सभी चाइल्ड एलिमेंट्स को समान चौड़ाई देने के लिए, प्रत्येक में .frame(maxWidth: .infinity) जोड़ें। VStack के लिए, लंबवत आकार बाध्य करने के लिए .fixedSize(horizontal: false, vertical: true) का उपयोग करें।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें