स्विफ्ट 5.2 और आईओएस 13.4 के साथ, अपनी आवश्यकताओं के अनुसार, आप अपने VStackशीर्ष अग्रणी बाधाओं और एक पूर्ण आकार के फ्रेम के साथ संरेखित करने के लिए निम्न उदाहरणों में से एक का उपयोग कर सकते हैं ।
ध्यान दें कि एक ही प्रदर्शन में सभी परिणाम नीचे दिए कोड स्निपेट, लेकिन के प्रभावी फ्रेम गारंटी नहीं है VStackऔर न ही की संख्या Viewतत्वों है कि जब तक दृश्य पदानुक्रम डिबगिंग प्रकट हो सकता है।
1. frame(minWidth:idealWidth:maxWidth:minHeight:idealHeight:maxHeight:alignment:)विधि का उपयोग करना
सबसे सरल तरीका यह है कि VStackअधिकतम चौड़ाई और ऊंचाई के साथ अपने फ्रेम को सेट करें और इसमें आवश्यक संरेखण भी पास करें frame(minWidth:idealWidth:maxWidth:minHeight:idealHeight:maxHeight:alignment:):
struct ContentView: View {
var body: some View {
VStack(alignment: .leading) {
Text("Title")
.font(.title)
Text("Content")
.font(.body)
}
.frame(
maxWidth: .infinity,
maxHeight: .infinity,
alignment: .topLeading
)
.background(Color.red)
}
}
एक विकल्प के रूप में, यदि आपके Views के लिए विशिष्ट संरेखण के साथ अधिकतम फ्रेम सेट करना आपके कोड बेस में एक सामान्य पैटर्न है, तो आप इस पर एक एक्सटेंशन विधि बना सकते हैं View:
extension View {
func fullSize(alignment: Alignment = .center) -> some View {
self.frame(
maxWidth: .infinity,
maxHeight: .infinity,
alignment: alignment
)
}
}
struct ContentView : View {
var body: some View {
VStack(alignment: .leading) {
Text("Title")
.font(.title)
Text("Content")
.font(.body)
}
.fullSize(alignment: .topLeading)
.background(Color.red)
}
}
2. Spacerसंरेखण को मजबूर करने के लिए एस का उपयोग करना
आप अपने VStackपूर्ण आकार के अंदर एम्बेड कर सकते हैं HStackऔर Spacerअपने VStackशीर्ष अग्रणी संरेखण को मजबूर करने के लिए ट्रेलिंग और बॉटम एस का उपयोग कर सकते हैं :
struct ContentView: View {
var body: some View {
HStack {
VStack(alignment: .leading) {
Text("Title")
.font(.title)
Text("Content")
.font(.body)
Spacer()
}
Spacer()
}
.frame(
maxWidth: .infinity,
maxHeight: .infinity
)
.background(Color.red)
}
}
3. एक ZStackऔर एक पूर्ण आकार की पृष्ठभूमि का उपयोग करनाView
इस उदाहरण से पता चलता है कि किस प्रकार आपके VStackअंदर ZStackएक शीर्ष अग्रणी संरेखण है। ध्यान दें कि Colorअधिकतम चौड़ाई और ऊंचाई निर्धारित करने के लिए दृश्य का उपयोग कैसे किया जाता है:
struct ContentView: View {
var body: some View {
ZStack(alignment: .topLeading) {
Color.red
.frame(maxWidth: .infinity, maxHeight: .infinity)
VStack(alignment: .leading) {
Text("Title")
.font(.title)
Text("Content")
.font(.body)
}
}
}
}
4. उपयोग करना GeometryReader
GeometryReaderनिम्नलिखित घोषणा है :
एक कंटेनर दृश्य जो अपनी सामग्री को अपने स्वयं के आकार के कार्य के रूप में परिभाषित करता है और अंतरिक्ष को समन्वित करता है। [...] यह दृश्य अपने मूल लेआउट के लिए एक लचीला पसंदीदा आकार देता है।
नीचे दिए गए कोड स्निपेट से पता चलता है कि शीर्ष अग्रणी बाधाओं और एक पूर्ण आकार फ्रेम के साथ GeometryReaderअपने संरेखित करने के लिए कैसे उपयोग करें VStack:
struct ContentView : View {
var body: some View {
GeometryReader { geometryProxy in
VStack(alignment: .leading) {
Text("Title")
.font(.title)
Text("Content")
.font(.body)
}
.frame(
width: geometryProxy.size.width,
height: geometryProxy.size.height,
alignment: .topLeading
)
}
.background(Color.red)
}
}
5. overlay(_:alignment:)विधि का उपयोग करना
यदि आप VStackकिसी मौजूदा पूर्ण आकार के शीर्ष पर अपने शीर्ष अग्रणी अवरोधों के साथ संरेखित करना चाहते हैं View, तो आप overlay(_:alignment:)विधि का उपयोग कर सकते हैं :
struct ContentView: View {
var body: some View {
Color.red
.frame(
maxWidth: .infinity,
maxHeight: .infinity
)
.overlay(
VStack(alignment: .leading) {
Text("Title")
.font(.title)
Text("Content")
.font(.body)
},
alignment: .topLeading
)
}
}
प्रदर्शित करें:
