Stack
๋ทฐ๋ฅผ ์์ง ๋๋ ์ํ์ผ๋ก ์ ๋ ฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋์ ๋๋ค.
Stack์ ์ฌ์ฉํด์ ์ฌ๋ฌ๊ฐ์ ๋ทฐ๋ฅผ ๊ทธ๋ฃนํํ๊ณ ๋ ์ด์์์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
VSatck
๋ทฐ๋ฅผ ์์ง์ผ๋ก ์๋ ์คํ์ ๋๋ค. ์ ์ธ๋ ์์๋๋ก ๋ทฐ๋ค์ ์์์ ์๋๋ก ์์ด๊ฒ ๋ฉ๋๋ค.
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Text("First View")
Text("Second View")
Text("Third View")
}
}
}
Alignment
VStack์์ alignment ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ํ์ ๋ทฐ์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ง์ ํ ์ ์์ต๋๋ค.
.leading์ ์ ํํ๋ฉด ์ผ์ชฝ์ ๊ธฐ์ค์ผ๋ก, .trailing์ ์ ํํ๋ฉด ์ค๋ฅธ์ชฝ์ ๊ธฐ์ค์ผ๋ก, .center๋ฅผ ์ ํํ๋ฉด ์ค์์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ center์ ๋๋ค.
LazyVStack
์ง์ฐ ๋ก๋ฉ(lazy loading) ๋ฐฉ์์ผ๋ก ๋์ํ๋ VStack์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก VStack๊ณผ ๋น์ทํ์ง๋ง, ํ๋ฉด์ ํ์ํ ๋ ํ์ํ ๋ทฐ๋ง ๋ก๋ํฉ๋๋ค. ๋ง์ ์์ ํญ๋ชฉ์ ํ์ํ๋ ๊ฒฝ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
import SwiftUI
struct ContentView: View {
var body: some View {
ScrollView {
LazyVStack {
ForEach(1..<100) { number in
Text("Row \(number)")
}
}
}
}
}
HStack
๋ทฐ๋ฅผ ์ํ์ผ๋ก ์๋ ์คํ์ ๋๋ค. ์ ์ธ๋ ์์๋๋ก ๋ทฐ๋ค์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์์ด๊ฒ ๋ฉ๋๋ค.
import SwiftUI
struct ContentView: View {
var body: some View {
HStack {
Text("First View")
Text("Second View")
Text("Third View")
}
}
}
Alignment
HStack์์ alignment ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ํ์ ๋ทฐ์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ง์ ํ ์ ์์ต๋๋ค.
.top์ ์ ํํ๋ฉด ์์ชฝ์ ๊ธฐ์ค์ผ๋ก, .trailing์ ์ ํํ๋ฉด ์๋์ชฝ์ ๊ธฐ์ค์ผ๋ก, .center๋ฅผ ์ ํํ๋ฉด ์ค์์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ center ์ ๋๋ค.
์ฐจ์ด๋ฅผ ๋น๊ตํ๊ธฐ ์ํด ๋ ๋ฒ์งธ text์ ํฌ๊ธฐ๋ฅผ ์ง์ ํด ์ฃผ๊ณ , HStack ๋ทฐ์ ๋ฐฐ๊ฒฝ ์์ ํ์์ผ๋ก ์ง์ ํฉ๋๋ค.
import SwiftUI
struct ContentView: View {
var body: some View {
HStack(alignment: .top) {
Text("First View")
Text("Second View")
.frame(width: 100, height: 300)
Text("Third View")
}
.background(Color.gray)
}
}
LazyHStack
์ง์ฐ ๋ก๋ฉ(lazy loading) ๋ฐฉ์์ผ๋ก ๋์ํ๋ HStack์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก HStack๊ณผ ๋น์ทํ์ง๋ง, ํ๋ฉด์ ํ์ํ ๋ ํ์ํ ๋ทฐ๋ง ๋ก๋ํฉ๋๋ค. ๋ง์ ์์ ํญ๋ชฉ์ ํ์ํ๋ ๊ฒฝ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
import SwiftUI
struct ContentView: View {
var body: some View {
ScrollView(.horizontal) {
LazyHStack {
ForEach(1..<100) { number in
Text("Item \(number)")
}
}
}
}
}
ZStack
๋ทฐ๋ฅผ ๊ฒน์ณ์ ์๋ ์คํ์ ๋๋ค. ์ ์ธ๋ ์์๋๋ก ๋ทฐ๋ค์ ๊ฒน์ณ์ ์์ ๋๋ค. ๊ฐ์ฅ ๋ง์ง๋ง์ ์ ์ธ๋ ๋ทฐ๊ฐ ๊ฐ์ฅ ์์ ํ์๋ฉ๋๋ค. ZStack์ ๋ทฐ๋ฅผ 3D ๊ณต๊ฐ์์ ๊ฒน์น๊ฒ ํ์ฌ ๋ค์ํ ์๊ฐ์ ํจ๊ณผ๋ฅผ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
import SwiftUI
struct ContentView: View {
var body: some View {
ZStack {
Rectangle()
.fill(Color.blue)
.frame(width: 200, height: 200)
Circle()
.fill(Color.red)
.frame(width: 150, height: 150)
}
}
}
ZIndex
ZStack์ ์ํ ๋ทฐ์ ์์๋ฅผ ์ค์ ํ๋ ์์ ์์ ๋๋ค. zIndex๋ฅผ ์ฌ์ฉํ์ฌ ๋ทฐ์ ์ ๋ ฌ ์์๋ฅผ ์๋์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค. ์ซ์๊ฐ ์์์๋ก ๋ค์, ํด์๋ก ์์ ํ์๋ฉ๋๋ค.
import SwiftUI
struct ContentView: View {
var body: some View {
ZStack {
Rectangle()
.fill(Color.blue)
.frame(width: 200, height: 200)
.zIndex(1)
Circle()
.fill(Color.red)
.frame(width: 150, height: 150)
.zIndex(0)
}
}
}
์ ์ธ์์๋๋ก๋ผ๋ฉด ์์ ์ฌ์ง์ฒ๋ผ ์ฌ๊ฐํ ์์ ์์ด ํ์๋์ด์ผ ํ์ง๋ง, zIndex๋ก ์์๋ฅผ ๋ฐ๊พธ์ด ์ฌ๊ฐํ์ด ๋ ์์ ํ์๋ฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์์ด ๋ณด์ด์ง ์๊ธฐ ๋๋ฌธ์ ์์ ํฌ๊ธฐ๋ฅผ (width: 300, height: 300)์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ์ ์์ ์ฌ๊ฐํ์ด ํ์๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
'๐ iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[RxSwift] RxSwift๋? (0) | 2024.06.03 |
---|---|
[SwiftUI] Text (0) | 2024.04.18 |
[SwiftUI] Property Wrappers (0) | 2024.04.04 |
[๋น๋๊ธฐ ์ฒ๋ฆฌ] ๋น๋๊ธฐ ์ฒ๋ฆฌ๋? (0) | 2023.09.18 |
[SwiftUI] SwiftUI๋? (0) | 2023.03.15 |