๊ณต์๋ฌธ์ : A view that overlays its subviews, aligning them in both axes.
ํ์ ๋ทฐ๋ฅผ ๊ฒน์ณ์ ํ์ํ๋ฉฐ, ํ์๋ทฐ๋ค์ ์ํ ๋ฐ ์์ง์ถ์ผ๋ก ์ ๋ ฌํ๋ ๋ทฐ์ด๋ค.
@MainActor @frozen @preconcurrency
struct ZStack<Content> where Content : View
VStack, HStack๊ณผ ๊ฐ์ด Viewํ์์ ์ปจํ ํธ๋ฅผ ์ ๋ค๋ฆญํ๊ฒ ๋ฐ๋๋ค.
์ฃผ๋ก ํ ํ๋ฉด์์ ๋ทฐ๋ฅผ ๊ฒน์ณ ํํํ ๋ ์ฌ์ฉํ๋ค.
let colors: [Color] =
[.red, .orange, .yellow, .green, .blue, .purple]
var body: some View {
ZStack {
ForEach(0..<colors.count) {
Rectangle()
.fill(colors[$0])
.frame(width: 100, height: 100)
.offset(x: CGFloat($0) * 10.0,
y: CGFloat($0) * 10.0)
}
}
}
ํด๋น ์์์์๋ ๋ฐ๋ณต๋ฌธ์ ํตํด ์ฌ๊ฐํ์ ๋ฌด์ง๊ฐ์ ์์๋ก ์ฑ์์ ZStack์ ์น์ด ๋์๋ค.
์์ ํ ๊ฒน์น๋ฉด ์์ ๋ณผ ์ ์์ผ๋, offset์ ์กฐ๊ธ ์ฉ ๋ณ๊ฒฝํด ์ฃผ์์ผ๋ฉฐ, ํด๋น ์ฝ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ๋ฌด์ง๊ฐ์ ์์๋ก ์์ฌ์๋ ์ฌ๊ฐํ์ ํ์ธ ํ ์ ์๋ค.
zIndex ๋ชจ๋ํ์ด์ด๋ฅผ ํตํด์ ZStack์์์ ์ฌ๋ ค์ง๋ ์์๋ฅผ ๊ฒฐ์ ํด ์ค ์๋ ์๋ค.
ZStack {
Rectangle()
.fll(Color.red)
.frame(width: 100, height: 100)
.zIndex(1)
Rectangle()
.fll(Color.green)
.frame(width: 100, height: 100)
.zIndex(1)
}