728x90
반응형
ZStack은 SwiftUI에서 사용하는 레이아웃 컨테이너 중 하나로, Z축을 따라 뷰들을 겹쳐서 배치할 때 사용됩니다. ZStack을 사용하면 앞뒤로 여러 뷰를 쌓는 방식으로 레이아웃을 구성할 수 있습니다.
주요 특징
- Z축 레이아웃: ZStack은 뷰를 Z축 방향으로 배치하여 겹쳐서 표현합니다. 즉, 첫 번째로 추가된 뷰는 가장 뒤에 위치하고, 그 이후로 추가된 뷰는 앞쪽에 쌓이게 됩니다.
- 뷰 겹치기: 여러 뷰를 중첩해서 보여줄 때 유용합니다. 예를 들어, 이미지 위에 텍스트를 표시하거나 배경 위에 버튼을 배치하는 등의 작업을 할 수 있습니다.
- 정렬: ZStack 내부의 뷰들은 기본적으로 중앙에 정렬됩니다. 하지만 alignment 매개변수를 사용하여 다른 위치로 정렬할 수 있습니다.
기본 사용법
ZStack {
Color.blue
Text("Hello, World!")
.foregroundColor(.white)
}
설명:
- Color.blue는 ZStack의 가장 뒤에 배치된 배경입니다.
- Text("Hello, World!")는 그 위에 배치된 텍스트로, 파란색 배경 위에 흰색 글씨가 표시됩니다.
ZStack의 동작
- 첫 번째로 선언한 뷰는 가장 뒤에 위치합니다.
- 그 이후로 선언된 뷰들은 앞에 쌓입니다.
- 기본적으로 뷰는 중앙에 배치되지만, alignment를 사용하여 다른 위치로 이동시킬 수 있습니다.
ZStack {
Color.red
Image(systemName: "star")
Text("별 모양")
}
이 코드는 빨간색 배경 위에 별 모양 이미지가 표시되고, 그 위에 "별 모양"이라는 텍스트가 겹쳐서 나타납니다.
정렬 (Alignment)
기본적으로 ZStack은 뷰를 중앙에 배치하지만, alignment 매개변수를 사용하여 원하는 방향으로 정렬할 수 있습니다.
ZStack(alignment: .topLeading) {
Color.green
Text("Hello")
Text("World")
}
- alignment: .topLeading을 사용하면, 두 텍스트가 왼쪽 상단에 배치됩니다.
alignment에는 .topLeading, .topTrailing, .bottomLeading, .bottomTrailing, .center 등이 가능합니다.
크기 조정
ZStack의 크기는 기본적으로 그 안에 포함된 가장 큰 뷰의 크기로 결정됩니다. 하지만 ZStack에 직접 프레임(frame)을 설정해서 크기를 조절할 수 있습니다.
ZStack {
Color.yellow
Text("SwiftUI")
}
.frame(width: 200, height: 200)
이 경우, ZStack은 200x200의 크기를 가지며, 그 안에 있는 뷰들도 그 크기에 맞춰 배치됩니다.
예시: 이미지 위에 텍스트 겹치기
ZStack {
Image("backgroundImage")
.resizable()
.scaledToFill()
.frame(width: 300, height: 200)
.clipped()
Text("Welcome")
.font(.largeTitle)
.foregroundColor(.white)
.shadow(radius: 10)
}
설명:
- Image("backgroundImage"): 배경 이미지를 300x200 크기로 표시하고, scaledToFill()로 이미지를 프레임에 맞게 조정합니다.
- Text("Welcome"): 그 위에 텍스트를 흰색으로 표시하고, 그림자를 추가하여 시각적으로 강조합니다.
ZStack 활용 사례
- 이미지 위에 텍스트나 버튼 배치: 배경 이미지 위에 레이블, 버튼, 다른 뷰들을 겹쳐서 표시할 때 자주 사용됩니다.
- 중첩된 배경: 여러 배경 색상이나 이미지를 중첩하여 배치하고, 그 위에 콘텐츠를 올리는 레이아웃을 만들 때 유용합니다.
- 효과 추가: 배경 위에 불투명한 오버레이(Overlay)를 추가하거나, 텍스트에 그라데이션이나 음영 효과를 주는 데 사용할 수 있습니다.
예시: 오버레이 추가
ZStack {
Color.blue
.frame(width: 200, height: 200)
.cornerRadius(20)
Text("Hello SwiftUI")
.foregroundColor(.white)
.padding()
.background(Color.black.opacity(0.7))
.cornerRadius(10)
}
설명:
- ZStack 안에 파란색 배경이 있고, 그 위에 텍스트가 검은색 투명 배경과 함께 배치됩니다.
요약
- ZStack은 뷰를 Z축(앞뒤)으로 겹쳐서 배치하는 컨테이너입니다.
- 가장 먼저 선언된 뷰는 가장 뒤에 위치하며, 이후 뷰들은 그 위에 쌓입니다.
- alignment 매개변수를 사용하여 뷰를 원하는 위치로 정렬할 수 있습니다.
- 배경 이미지나 색상 위에 텍스트, 버튼 등을 겹치는 레이아웃에서 매우 유용합니다.
ZStack을 사용하면 중첩된 레이아웃을 쉽게 구현할 수 있으며, SwiftUI에서 매우 자주 사용되는 레이아웃 도구입니다.
'Category > iOS' 카테고리의 다른 글
| @EnvironmentObject란? (0) | 2024.09.22 |
|---|---|
| NavigationStack이란? (1) | 2024.09.22 |
| enum(열거형)이란? (1) | 2024.09.22 |
| CaseIterable이란? (0) | 2024.09.22 |
| @StateObject와 @ObservedObject의 상태 관리 방식 차이 (1) | 2024.09.21 |