Swift 5.2 ve iOS 13.4 ile ihtiyaçlarınıza göre aşağıdaki örneklerden birini VStack
en ö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 VStack
veya 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 VStack
maksimum 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 View
kod 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. Spacer
Hizalamayı zorlamak için s kullanma
İçinizi VStack
tam boyutta gömebilir HStack
ve üstteki hizalamanızı Spacer
zorlamak için VStack
son 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 ZStack
ve tam boyutlu bir arka plan kullanmaView
Bu örnek, üstte bir satır aralığı hizalamasına sahip bir a'nın VStack
içine nasıl gömüleceğinizi gösterir ZStack
. Color
Maksimum 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
GeometryReader
aş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 GeometryReader
uygun 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
VStack
Mevcut bir tam boyutun üzerine en önde gelen kısıtlamalarla hizalamak View
istiyorsanı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: