इसे स्वयं समझने की कोशिश कर रहा था क्योंकि अन्य उत्तर यहाँ उल्लेख करते हैं Text.multilineTextAlignment(_:)
/ VStack(alignment:)
/ frame(width:alignment:)
लेकिन प्रत्येक समाधान एक विशिष्ट समस्या को हल करता है। आखिरकार यह यूआई की आवश्यकता और इनमें से एक संयोजन पर निर्भर करता है।
VStack(alignment:)
alignment
यहां एक-दूसरे से संबंधित में आंतरिक दृश्यों के लिए हैं।
इसलिए निर्दिष्ट करने .leading
से सभी आंतरिक विचारों को अपने प्रमुख को एक दूसरे के साथ गठबंधन करने में मदद मिलेगी।
VStack(alignment: .leading, spacing: 6) {
Text("Lorem ipsum dolor")
.background(Color.gray.opacity(0.2))
Text("sit amet")
.background(Color.gray.opacity(0.2))
}
.background(Color.gray.opacity(0.1))
.frame
में frame(width:alignment:)
या frame(maxWidth:alignment:)
, alignment
दिया चौड़ाई के भीतर सामग्री के लिए है।
VStack(alignment: .leading, spacing: 6) {
Text("Lorem ipsum dolor")
.background(Color.gray.opacity(0.2))
Text("sit amet")
.background(Color.gray.opacity(0.2))
}
.frame(width: 380, alignment: .trailing)
.background(Color.gray.opacity(0.1))
इनर व्यूज एक दूसरे से जुड़े हुए हैं, लेकिन व्यूज खुद से जुड़े हुए हैं VStack
।
.multilineTextAlignment
यह अंदर पाठ के संरेखण को निर्दिष्ट करता है और सबसे अच्छा तब देखा जा सकता है जब कई लाइनें होती हैं अन्यथा बिना परिभाषित किए frame(width:alignment)
, चौड़ाई स्वचालित रूप से समायोजित हो जाती है और डिफ़ॉल्ट alignment
एस से प्रभावित होती है ।
VStack(alignment: .trailing, spacing: 6) {
Text("0. automatic frame\n+ view at parent's specified alignment\n+ multilineTA not set by default at leading")
.background(Color.gray.opacity(0.2))
Text("1. automatic frame\n+ view at parent's specified alignment\n+ multilineTA set to center")
.multilineTextAlignment(.center)
.background(Color.gray.opacity(0.2))
Text("2. automatic frame\n+ view at parent's specified alignment\n+ multilineTA set to trailing")
.multilineTextAlignment(.trailing)
.background(Color.gray.opacity(0.2))
}
.frame(width: 380, alignment: .trailing)
.background(Color.gray.opacity(0.1))
संयोजन के साथ टेस्ट:
VStack(alignment: .trailing, spacing: 6) {
Text("1. automatic frame, at parent's alignment")
.background(Color.gray.opacity(0.2))
Text("2. given full width & leading alignment\n+ multilineTA at default leading")
.frame(maxWidth: .infinity, alignment: .leading)
.background(Color.gray.opacity(0.2))
Text("3. given full width & center alignment\n+ multilineTA at default leading")
.frame(maxWidth: .infinity, alignment: .center)
.background(Color.gray.opacity(0.2))
Text("4. given full width & center alignment\n+ multilineTA set to center")
.multilineTextAlignment(.center)
.frame(maxWidth: .infinity, alignment: .center)
.background(Color.gray.opacity(0.2))
Text("5. given full width & center alignment\n+ multilineTA set to trailing")
.multilineTextAlignment(.trailing)
.frame(maxWidth: .infinity, alignment: .center)
.background(Color.gray.opacity(0.2))
Text("6. given full width but no alignment\n+ multilineTA at default leading\n+ leading is based on content, looks odd sometimes as seen here")
.frame(maxWidth: .infinity)
.background(Color.gray.opacity(0.2))
}
.frame(width: 380)
.background(Color.gray.opacity(0.1))