設計 App 畫面時,除了控制元件的上下左右位置,控制元件的階層也很重要,因為它將決定 A 元件會覆蓋元件 B 還是被 B 覆蓋,影響元件是否會被別人檔到。
在 SwiftUI 裡主要有 ZStack,overlay & background 三種技術可以調整階層,接下來讓我們一一介紹吧。
- 將元件一層層疊上的 ZStack。
- 將別人疊在自己身上的 overlay。
- 將別人壓在自己底下的 background。
將元件一層層疊上的 ZStack
ZStack 跟其它 stack 元件一樣,可以在 { } 裡加入它要包含排列的元件。不同於水平排列的 HStack & 垂直排列的 VStack,它會將元件一層層疊上。
就像疊疊樂,{ } 裡愈後面產生的元件將疊在之前的元件身上,因此以下程式會先加入 Image,然後再疊上 Text,變成 Text 覆蓋 Image。
struct ContentView: View {
var body: some View {
ZStack {
Image(.peter)
.resizable()
.scaledToFit()
Text("愛瘋一切為蘋果的彼得潘")
}
}
}