*SwiftUI: Apple์ ์๋ก์ด UI ํ๋ ์์ํฌ๋ก Declarative Swift Code ๋ก ๋ง๋ค์ด์ง.
์ด๋ณด์๋ค์ ์ํด iOS ์ฑ์ ๋ ์ด์์์ ๋ง๋ค๊ธฐ ์ฝ๋๋ก ๋๋๊ทธ ์ค ๋๋กญ ์ฝ๋ ์์ฑ ๊ธฐ๋ฅ์ ๋ง๋ ๊ฒ.
์บ๋ฒ์ค์ ๊ทธ๋ฅ ๋๋๊ทธ ์ค ๋๋กญํ๋ฉด ํ์ํ ์ฝ๋๊ฐ ์๋์ผ๋ก ์์ฑ๋๋ค.
์๋ฎฌ๋ ์ด์ ๋ทฐ๊ฐ ์ ๊ณต๋์ด ํ๋ฉด์์ ๋ฏธ๋ฆฌ ๋ณด๊ณ ํ ์คํธํ ์ ์๋ค.
UI๋ฅผ ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ๊ฐ์ฅ ํฐ ์ฅ์ !
SwiftUI๋ฅผ ๋ง๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ ์ ํ์ ํฌ๋ก์ค ํ๋ซํผ(์์น, ๋งฅ, iPhone) ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ฝ๊ฒ ๊ตฌ์ถํ๊ธฐ ์ํจ์ด๋ค.
Project Catalyst๋ก Mac ์ฑ์ผ๋ก ๋ฐ๋ก ๋ณํ์ด ๊ฐ๋ฅํ๋ค.
iOS 14 ์ด์์ ์คํํ ์ ์๋ ์ฅ์น์์๋ง ๊ตฌ๋๊ฐ๋ฅํจ. iPhone 6S ์ด์. iPad Air2 ์ด์.
https://developer.apple.com/kr/xcode/swiftui/
*SwiftUI ์ฌ์ฉ๋ฒ
1. SwiftUI Interface๋ก ์ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ
New Project ๋ฅผ ์์ฑํ ๋ Interface ๋ฅผ storyboard ๊ฐ ์๋ SwiftUI ๋ก ์ง์ ํด์ค๋ค.
์ด๊ธฐ ์ ํ ์ฐฝ์ ํ๋ก์ ํธ ํด๋, ์ฝ๋, ๋ผ์ด๋ธ ํ๋ฆฌ๋ทฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
Resume ๋ฒํผ์ ๋๋ฅด๋ฉด build ๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ๊ฐ๋ฅํ๋ค.
์์ ํ๋ฉด ์กฐ์๋ฒํผ ๋๋ฅด๋ค๊ฐ ๊ฐ์๊ธฐ Canvas ๊ฐ ์ฌ๋ผ์ก์๋๋ฐ, Canvas ์ฒดํฌํ๊ณ Layout > Canvas on Right ์ ์ฉํด์ฃผ๋ ์์ ์ ์๊ฒผ๋ค.
2. ํ๋ฆฌ๋ทฐ ๊ธฐ๊ธฐ ๋ณ๊ฒฝ
1) ์ฝ๋๋ก ๋ณ๊ฒฝํ๊ธฐ
import SwiftUI
struct ContentView: View {
var body: some View {
Text("Hello, world!")
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.previewDevice("iPhone 11")
}
}
ContentView().previewDevice("iPhone 11") ์ผ๋ก ContentView()์ previewDevice๋ฅผ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
2) Content View ์ Device ๋ณ๊ฒฝ
Content View ์ Device ๋ณ๊ฒฝ์ผ๋ก๋ ๋ฐ๊ฟ ์ ์๋ค. ์๋ฎฌ๋ ์ดํฐ๊ฐ ์ค์น๋ ๋จ๋ง๊ธฐ๋ง ๊ฐ๋ฅํ๋ค. ์์ผ๋ฉด ์ถ๊ฐ ๋ค์ด๋ก๋ํด์ฃผ๊ธฐ.
3. UI์์ ์ถ๊ฐํ๊ธฐ
1) ๋ฒํผ์ผ๋ก ์ถ๊ฐํ๊ธฐ
storyboard ์ธํฐํ์ด์ค์์ ํ๋ ๊ฒ ์ฒ๋ผ ์๋จ์ + ๋ฒํผ์ ๋๋ฅด๊ณ Object ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๋ค.
๋ง์ฐ์ค๋ก preview ๋ ์ฝ๋์ ๋๋๊ทธ ์ค ๋๋กญํ๋ฉด ์์ฑ & ๋ฐฐ์น๋๋ค.
ํ๋ฉด ์๋ก ์ฐจ๊ณก์ฐจ๊ณก ์์์ผํ ๋๋ ZStack ์ ์ด์ฉํด์ฃผ์.
์ฐธ๊ณ ๋ก SwiftUI ์ Stack ์๋ V, H, Z Stack ์ด ์๋ค. VStack(์์ง์ผ๋ก ๋ฐฐ์ด), HStack(์ํ์ผ๋ก ๋ฐฐ์ด), ZStack(ํ๋ฉด ์๋ก ์๊ธฐ)
2) ์ฝ๋์์ ์ถ๊ฐํ๊ธฐ
์ฝ๋์์์ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด Command + ํด๋ฆญํ๋ฉด ์ํ๋ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
4. Asset ์ถ๊ฐํ๊ธฐ
์ผ์ชฝ ํ๋ก์ ํธ ๊ตฌ์กฐ์์ Asset ์์ด์ฝ ํด๋ฆญ ํ, ๊ธฐ์กด Asset ๋ค์ ์ญ์ ํ ํ I am Rich Asset ๋ค์ import ํด์ค๋ค.
5. ์ด๋ฏธ์ง ์ถ๊ฐํ๊ณ ๋น์จ ๋ง์ถฐ์ ๋ฐฐ์นํ๊ธฐ
Image ์ resize, ratio ๋ฑ์ ์์ฑ์ ๋ถ์ฌํ๊ณ ์ถ์ผ๋ฉด Object ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ Modifier๋ฅผ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
import SwiftUI
struct ContentView: View {
var body: some View {
ZStack{
Color(.systemTeal)
.edgesIgnoringSafeArea(.all)
VStack {
Text("I Am Rich")
.font(.system(size:40))
.fontWeight(.bold)
.foregroundColor(Color.white)
Image("diamond")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 200, height: 200, alignment: .center)
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.previewDevice("iPhone 11")
}
}
๋น์จ์ด ์๋ ์ฌ์ด์ฆ ์์ฒด๋ฅผ ์ง์ ํ ๋ frame() ํจ์๋ฅผ ์ด์ฉํ์.
'๐ฑ App Development Study > iOS๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Udemy iOS & Swift Bootcamp] H4XOR News(List, ObservedObject, WKWebView) (0) | 2023.07.08 |
---|---|
[Udemy iOS & Swift Bootcamp] Complex Designs and Layouts using SwiftUI (0) | 2023.07.07 |
[Udemy iOS & Swift Bootcamp] Command Line and Terminal (0) | 2023.07.06 |
[Udemy iOS & Swift Bootcamp] iOS Application Lifecycle (0) | 2023.07.05 |
[Udemy iOS & Swift Bootcamp] ViewController Lifecycle (0) | 2023.07.05 |