स्विफ्ट 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)
}
}
एक विकल्प के रूप में, यदि आपके View
s के लिए विशिष्ट संरेखण के साथ अधिकतम फ्रेम सेट करना आपके कोड बेस में एक सामान्य पैटर्न है, तो आप इस पर एक एक्सटेंशन विधि बना सकते हैं 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
)
}
}
प्रदर्शित करें: