Swift 5.2 ve iOS 13.4 ile ihtiyaçlarınıza göre aşağıdaki örneklerden birini VStacken önde gelen kısıtlamalarla ve tam boyutlu bir çerçeveyle uyumlu hale getirmek için kullanabilirsiniz .
Aşağıdaki kod parçacıklarının hepsinin aynı görüntü ile sonuçlandığını, ancak görünüm hiyerarşisinde hata ayıklama sırasında görünebilecek öğelerin etkili çerçevesini VStackveya sayısını garanti etmediğini unutmayın View.
1. frame(minWidth:idealWidth:maxWidth:minHeight:idealHeight:maxHeight:alignment:)Yöntemi kullanma
En basit yaklaşım, çerçevenizi VStackmaksimum genişlik ve yüksekliğe ayarlamak ve ayrıca gerekli hizalamayı şuradan geçirmektir 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)
}
}
Alternatif olarak, e-postalarınız için belirli hizalamayla maksimum çerçeve belirlemek Viewkod tabanınızda yaygın bir modelse, bunun için bir genişletme yöntemi oluşturabilirsiniz 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. SpacerHizalamayı zorlamak için s kullanma
İçinizi VStacktam boyutta gömebilir HStackve üstteki hizalamanızı Spacerzorlamak için VStackson ve alt s kullanabilirsiniz :
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. a ZStackve tam boyutlu bir arka plan kullanmaView
Bu örnek, üstte bir satır aralığı hizalamasına sahip bir a'nın VStackiçine nasıl gömüleceğinizi gösterir ZStack. ColorMaksimum genişliği ve yüksekliği ayarlamak için görünümün nasıl kullanıldığına dikkat edin:
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. kullanma GeometryReader
GeometryReaderaşağıdaki beyana sahiptir :
İçeriğini kendi boyutunun ve koordinat alanının bir işlevi olarak tanımlayan bir kap görünümü. [...] Bu görünüm, üst düzenine esnek bir tercih edilen boyut döndürür.
Aşağıdaki kod parçacığı , en önde gelen kısıtlamalara ve tam boyutlu bir çerçeveye GeometryReaderuygun hale getirmek için nasıl kullanılacağını gösterir 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:)yöntemi kullanma
VStackMevcut bir tam boyutun üzerine en önde gelen kısıtlamalarla hizalamak Viewistiyorsanız, overlay(_:alignment:)yöntemi kullanabilirsiniz :
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
)
}
}
Görüntüle:
