Swift UI์์ ForEach๋ก View ์ฌ๋ฌ ๊ฐ
์ค๋ ์คํฐ๋์์ ๋ ์จ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง๋ฅผ Swift UI๋ก ๊ตฌํํ๋ ๊ณผ์ ๋ฅผ ์งํํ๋ค.
HStack๊ณผ VStack์ ํ์ฉํด์ ๊ตฌํํ๋ ๊ณผ์ ์๊ณ ๊ตฌํ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค.
ํ์ง๋ง ๊ตฌํ์ ์๋ฃํ๊ณ ๋ณด๋ ๋๋ถ๋ถ์ด ํ๋ ์ฝ๋ฉ๋์ด ์์ด์ ๊ฒน์น๋ ์ฝ๋๋ค์ด ๋ง์ ์ด๋ฅผ ์์ ํด์ฃผ๋ ์์ ์ ์งํํ๋ค.
์๋ ์ฌ์ง์ ๋ณด๋ฉด ๋นจ๊ฐ์ ๋ทฐ ์์ ์ด๋ก์ ๋ทฐ๋ค์ด ๊ฐ์ ํํ๋ก ๋ฐฐ์น๋์ด ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๊ธฐ์กด์๋ HStack ๋ด๋ถ์ VStack์ ์ฌ๋ฌ ๊ฐ ๋ฐฐ์นํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋๋ฐ, ์ด๋ฅผ ForEach๋ฅผ ํ์ฉํด์ VStack์ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ์์ ํ๋ค.
1. ๊ธฐ์กด ์ฝ๋
struct DailyHourWeatherView: View {
var body: some View {
HStack {
VStack {
Text("8AM")
Spacer()
Image(systemName: "sun.max.fill")
.foregroundColor(Color.yellow)
Spacer()
Text("63°")
}
VStack {
Text("9AM")
Spacer()
Image(systemName: "cloud.sun.fill")
Spacer()
Text("63°")
}
VStack {
Text("10AM")
Spacer()
Image(systemName: "sun.max.fill")
.foregroundColor(Color.yellow)
Spacer()
Text("64°")
}
VStack {
Text("11AM")
Spacer()
Image(systemName: "cloud.fill")
Spacer()
Text("61°")
}
VStack {
Text("12AM")
Spacer()
Image(systemName: "cloud.rain.fill")
Spacer()
Text("62°")
}
Spacer()
}
.font(.title3)
.frame(height: 120)
.padding()
}
}
2. ์์ ํ ์ฝ๋
struct DailyHourWeatherView: View {
var body: some View {
// ForEach๋ฅผ ์ฌ์ฉํด์ ๋ฆฌํํ ๋ง ์๋ฃ
// ForEach๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ ๋ฌ์ธ์๋ก ์ ๋ฌํ๋ array์ ๊ฐ element๋ฅผ ์๋ณํ ์ ์๋ id๊ฐ ํ์ํ๋ค.
// ์ด๋ฅผ ์ํด Weather ๊ตฌ์กฐ์ฒด๊ฐ Hashable์ ๋ง์กฑํ๋๋ก ๊ตฌํํ๋ค.
HStack {
ForEach(weathers, id: \.self) { weather in
VStack {
Text(weather.time)
Spacer()
Image(systemName: weather.image)
Spacer()
Text(weather.temperature)
}
}
Spacer()
}
.font(.title3)
.frame(height: 120)
.padding()
}
}
๋ฆฌํํ ๋ง์ ์งํํ๋ฉด์ ์๊ฒ๋ ๊ฒ์ ForEach๋ฅผ ํ์ฉํ ๋ ์ ๋ฌ์ธ์๋ก ์ ๋ฌํ๋ array์ ๊ฐ ์์๋ฅผ ์๋ณํ ์ ์๋ id๋ฅผ ๋๊ฒจ์ค์ผ ํ๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋ค. ๊ทธ๋์ Weather ๊ตฌ์กฐ์ฒด๊ฐ Hashable์ ๋ง์กฑํ๋๋ก ์ ์ํ๋ค.
import Foundation
struct Weather : Hashable {
let id: Int
let time: String
let image: String
let temperature: String
}
'๐ป ๊ฐ๋ฐ > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS / SwiftUI] ๋ค์ํ ์ํ ํ๋กํผํฐ๋ค์ ์์๋ณด์! (0) | 2022.10.24 |
---|---|
[iOS / SwiftUI] ํค๋ณด๋๊ฐ ์ฌ๋ผ์ง์ง ์์์...๐ฉ (0) | 2022.10.21 |
[iOS / Swift] lim ํด๋ก์ -> 0 (ํด๋ก์ , ๊ทนํ์ผ๋ก ์ค์ฌ๋ณด๊ธฐ) (0) | 2022.10.05 |
[iOS / Swift] ํด๋ก์ ์ ํ๋กํผํฐ, ๊ฐ๋ณ๊ฒ ์์๋ณด๊ธฐ (0) | 2022.10.02 |
[iOS / Swift] ์์ VS ์ต์คํ ์ (0) | 2022.09.27 |