Lecuter 1 : Getting started with SwifUI
๊ฐ์ ์ฃผ์ ํ์์คํฌํ
ํ์๋ผ์ธ | Content |
40:00 | View์ฒ๋ผ ํ๋ํ๋ ๊ฒ์ด๋? |
43:09 | some View์ ๋ํ ์ง๋ฌธ + Lego ๋น์ |
50:03 | View์์์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ |
53:30 | some View์ ๋ํ ๋ต |
58:59 | View Modifier๋? |
1:05:00 | stroke ๋ฉ์๋ |
1:07:15 | Add Modifier |
1:09:25 | ZStack์ด๋? |
1:10:38 | View Builder๋? |
1:14:34 | view modifier ์ ์ฉ์ 2๊ฐ์ง ์ผ์ด์ค |
1:18:02 | SwiftUI ์ฝ๋ ์คํ์ผ |
๊ฐ์ ๋ด์ฉ ์ ๋ฆฌ
View๋?
- View๋ ์คํฌ๋ฆฐ ์์ ์ง์ฌ๊ฐํ์ ์์ญ์์ ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ ฅ์ ๋ฐ๊ณ ์ถ๋ ฅ์ ๋ํ๋ด๋ ๊ฒ
- simple view , combining view , bag of views์ 3๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค.
* Bag of Views : ์ฌ๋ฌ View๋ค์ View Builder๋ฅผ ํตํด ํ ์์ญ์ ๋ชจ์๋ ๊ฒ
* Combining View : Bag of Views๋ค์ ์กฐํฉํ ๊ฒ
struct ContentView: View {
var body: some View {
Text("Hello World!")
}
}
์์ ์ฝ๋๋ View์ ๊ฐ์ด ํ๋ํ๊ธฐ ์ํ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ฝ๋์ด๋ค. ContentView๋ผ๋ Struct์์ ์์ฑ๋ ์ฝ๋๋ค์ ์์ธํ ๋ณด์.
View์ฒ๋ผ ํ๋ํ๊ธฐ ์ํด์๋ body๋ผ๋ ๋ณ์๊ฐ ํ์ํ๋ค. ์ด๋, body ๋ณ์๋ ๋ณ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด์ ๋ณ์์ฒ๋ผ ์ฐ์ด๋ ๊ฒ์ด ์๋๋ผ ์ฌ๋ฌ View๋ค์ด ์กฐํฉ๋ ์ต์ข View๊ฐ ์คํฌ๋ฆฐ ์์ ๋ํ๋๊ฒ ํ๊ธฐ ์ํ ์ฐ์ฐ์ ๋ชฉ์ ์ผ๋ก ์ฐ์ธ๋ค.
some View๋ ๋ฌด์์ผ๊น?
๋ณดํต Swift ๋ฌธ๋ฒ์์ ๋ณ์ ์์ ์ฝ๋ก ๋ค์์๋ ๋ณ์์ ํ์ ์ ๊ธฐ์ฌํ๋ค. ๋ฐ๋ผ์ some View๋ผ๋ ๊ฒ์ ํ์ ์ด๋ผ๋ ์ด์ผ๊ธฐ์ธ๋ฐ ์ ๊ตณ์ด ์ ํํ ํ์ ์ ๊ธฐ์ฌํ์ง ์๊ณ ๋ชจํธํ๊ฒ some View๋ผ๊ณ ํด์ผ ํ ๊น?
์ด์ ๋ ๊ฐ๋จํ๋ค. body ๋ณ์๋ ์์ ์ค๋ช ํ๋ฏ์ด ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ก ํ๋์ ์ต์ข ์ ์ธ View๋ฅผ ๋ํ๋ธ๋ค. ์ด๋ฌํ View๊ฐ ์ด๋ ํ View ํ์ ์ผ์ง๋ ์ฐ๋ฆฌ๊ฐ ์์ํ ์ ์๋ค. ์๋ํ๋ฉด ZStack๊ฐ์ด View Combiner๋ View Modifier ๊ฐ์ ๊ฒ๋ค์ด ์กฐํฉ๋๋ ๋ณต์กํ ์ฝ๋๊ฐ ์์ฑ๋์ด์ ์ฐ์ฐ๋ ํ ๋ฐ ์ด ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ ์ด๋ค View ํ์ ์ผ์ง ์ฌ๋์ด ์ผ์ผ์ด ํ๋จํ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ํน์ ํ View ํ์ ์ ๊ธฐ์ฌํ์ง ์๊ณ some View๋ผ๊ณ ๊ธฐ์ฌํจ์ผ๋ก์จ ์ผ๋จ View ํ์ ์ค์ ํ๋์ผ ๊ฒ์ด๋ผ๊ณ ๋ง ๋ช ์ํ๋ ๊ฒ์ด๋ค.
View Modifier๋?
simple View์ color, padding ๊ฐ์ด ์์ฑ์ ์ ํด์ฃผ๋ ์ญํ ์ ํ๋ค. ์ด๋ฌํ Modifier๋ค์ด ๋ถ์ View๋ ์ด์ ๊ณผ ๋ค๋ฅธ ์๋ก์ด Modified View๊ฐ ๋๋ค. ์ฆ, Modifier๊ฐ ์ฌ๋ฌ๊ฐ์ธ ๊ฒฝ์ฐ ๋ถ์ ์์๋๋ก ์์ฐจ์ ์ผ๋ก ์ ์ฉ๋๋ฉฐ ์ ์ฉ๋ ๋๋ง๋ค ๋งค๋ฒ ์๋ก์ด View๊ฐ ์๊ฒจ๋๋ค๋ ๊ฒ์ด๋ค.
View Modifier๋ ์์๊ณผ ์ค๋ฒ๋ผ์ด๋ฉ์ด ๊ฐ๋ฅํ๋ค.
ZStack์ด๋?
ZStack์ View Combiner๋ก์จ Combining View๋ฅผ ๋ง๋ ๋ค. View Builder๋ค์ด ๋ง๋ ์ฌ๋ฌ Bag of Views๋ค์ ์กฐํฉํ๋๋ฐ ZStack์ ์ด๊ฒ๋ค์ Z์ถ ๊ธฐ์ค์ผ๋ก ์กฐํฉํ๋ค.
* View Builder๊ฐ ๋ฆฌํดํ๋ Bag of Views๋ค์ tuple Views๋ผ๊ณ ํ๋ค.
ZStack {
RoundedRectangle(cornerRadius: 25.0)
.stroke(lineWidth: 3)
Text("Hello World!")
.foregroundColor(.orange)
}
.padding(.horizontal)
.foregroundColor(.red)
์์ ์ฝ๋๋ ZStack์ ์์์ด๋ค. ๋์ฌ๊ฒจ ๋ด์ผํ ๊ฒ์ Modifier๋ค์ด๋ค. ZStack ์ธ๋ถ์์ ์ ์ธ๋ ๊ฒ๋ค๊ณผ ZStack ๋ด๋ถ ์ฆ, ์์ ์๋ View Builder์์ ์ ์ธ๋ ๊ฒ๋ค์ด ์กด์ฌํ๋ค. ์์ ๋งํ๋ฏ์ด Modifier๋ค์ ์์๊ณผ ์ค๋ฒ๋ผ์ด๋ฉ์ด ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค.
foregroundColor๋ฅผ ๋ณด๋ฉด ์ฝ๊ฒ ์ ์ ์๋ค. ์ธ๋ถ์์ ์ฆ ZStack ์์ฒด์์ ์ ์ธ๋ ๊ฒ์ ์์์ด ๋์ด ์์ ์๋ ๋ชจ๋ View Builder๋ค์๊ฒ ์ ์ฉ๋๋ค. ๋ํ, ๋ด๋ถ์ ์ ์ธ๋ foregroundColor๊ฐ ์ ์ฉ๋๋ ๊ฒ์ ๋ด์๋ ์ค๋ฒ๋ผ์ด๋ฉ๋ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
ํ์ง๋ง, padding์ ๊ฒฝ์ฐ๋ ๋ค๋ฅด๋ค. padding์ ๊ฒฝ์ฐ๋ foregroundColor์ฒ๋ผ ์ธ๋ถ์์ ์ ์ธ๋์์ ๋ ์์๋์ด ๋ชจ๋ View Builder๋ค์์ ์ ์ฉ๋ ๊ฒ ๊ฐ์ง๋ง ์ค์ ๋ก ๋ณด๋ฉด ZStack ์์ฒด์์๋ง ์ ์ฉ๋๊ณ ๋ด๋ถ์ Builder๋ค์๊ฒ ์ ์ฉ์ด ๋์ง ์์๋ค.
์ด์ฒ๋ผ, ZStack๊ฐ์ View Combiner์ ์ ์ฉ๋๋ View Modifier๋ค์๋ 2๊ฐ์ง ์ผ์ด์ค๊ฐ ์กด์ฌํ๋ค. ํ ์ผ์ด์ค๋ ์์์ด ๋๋๊ฒ, ๋ค๋ฅธ ํ ์ผ์ด์ค๋ ์์์ด ๋์ง ์๋ ๊ฒ์ด๋ค.
* ์ฌ์ค ์ด ๋ถ๋ถ์ ๊ฐ์์์ ๋ช ํํ๊ฒ ์ง์ด์ฃผ์์ง๋ ์์์ ์ ํํ ์ ๋ณด์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋๋ ์ด๋ ๊ฒ ์ดํดํ๋ค...
1๊ฐ์ ๋ง์น๋ฉฐ...
์๋ฌด๋๋ ์์ด ๊ฐ์์ด๊ธฐ ๋๋ฌธ์ ์๋ง์ ํค๋๋ผ๋ ๋ช ํํ๊ฒ ์ ๋ณด๋ฅผ ๋ฐ์๋๋ฆฌ๊ธฐ์๋ ํ๋ค์๋ค. ํ์ง๋ง, ๋จ์ํ SwiftUI์ ์ฌ์ฉ๋ฒ์ ๊ฐ๋ฅด์ณ์ฃผ๋ ๊ฒ์ด ์๋๋ผ ๊ทผ๋ณธ์ ์ผ๋ก ์ ์ด๋ ๊ฒ ์ฌ์ฉํ๋ ๊ฐ๋ฅผ ์์๋ฅผ ๋ค์ด๊ฐ๋ฉด์ ๊ฐ๋ฅด์ณ์ฃผ์ ์ ์ ๋ง ์ข์๋ค! ๋ํ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๊ฐ์ฒด์งํฅํ ํ๋ก๊ทธ๋๋ฐ์ด ๋ ๋ค ๊ฐ๋ฅํ Swift์ ๊ฐ๋ ฅํจ์ ์ฒ์์ผ๋ก ์ค๊ฐํ๋ ๊ฒ ๊ฐ๋ค.
๋๊ธ