Storyboard vs SwiftUI
2019๋ SwiftUI๊ฐ ๋ฐํ๋๊ธฐ ์ ๊น์ง๋ Storyboard ๊ฐ ์ ์ผํ ํ๋ฉด ๊ตฌ์ฑ ๋ฐฉ๋ฒ์ด์์ต๋๋ค. ๊ทธ๋ฌ๊ธฐ ๋๋ฌธ์, SwiftUI ์ ๋น๊ตํ์ ๋ ๋ ํผ๋ฐ์ค๊ฐ ์ ๋์ ์ผ๋ก ๋ง์ต๋๋ค. ํ์ง๋ง Storyboard ๋ ์์ดํฐ๊ณผ ์์ดํจ๋์ ํ๋ฉด ๊ตฌ์ฑ์๋ง ์ ํฉํ๊ธฐ ๋๋ฌธ์, SwiftUI ์ ๋น๊ตํ์ ๋ ์ฌ๋ฌ ํ๋ซํผ์ ๋ํ ๋์์ด ์ฝํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ์ด์ ๋นํด, SwiftUI ๋ ์ฌ๋ฌ ํ๋ซํผ์ ๋์ํ ์ ์๋ค๋ ๊ฐ์ ์ ๊ฐ์ง๋๋ค. ๋ค๋ง, SwiftUI ๋ iOS 13 ์ด์์์๋ง ์ง์์ด ๊ฐ๋ฅํ๋ค๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด์ ๊น์ง๋ ์์ดํฐ๊ณผ ์์ดํจ๋๋ UIKit ๊ทธ๋ฆฌ๊ณ Mac ์ appKit ์์ ๊ฐ๋ฐ์ ํ๋ค๋ฉด, ํ์ฌ๋ Mac Catalyst ์ apple Silicon Mac ๋ฑ ๋ค์ํ ํ๊ฒฝ์์ ์์ดํจ๋ ์ฑ๊ณผ Mac ์ฑ์ ์ฝ๋๋ฅผ ๊ณต์ ํ๋ ๋ฑ ์กฐ๊ธ ๋ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์๋ ํ๊ฒฝ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ต๋๋ค.
UIKit Framework ์ ๋ํ ์ดํด
UIKit Framework๋ ์ ์ ์ธํฐํ์ด์ค ๋๊ตฌ๋ฅผ ํตํด iOS ์ฑ์ ๊ตฌํํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด UIKit ์๋ ์ด๋ค ๊ฒ๋ค ์๋์ง ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ํ์ ์ผ๋ก UIKit ์๋ UIView, UIViewController, UIFont, UIColor ๊ฐ ์์ต๋๋ค. ๊ทธ์ค UIViewController ๋ ์ฑ์ ์คํํ ๋ ๋ณผ ์ ์๋ ๋๋ฐ์ด์ค ์คํฌ๋ฆฐ ์ ์ฒด๋ฅผ ์ฐจ์งํ๋ ์ฌ์ ๋๋ค. ์ด๋ ๋ชฉ์ ์ ๋ฐ๋ผ ์ฌ๋ฌ ์ข ๋ฅ๋ก ๋๋๋ฉฐ, ๋ณดํต ํ๋์ ํ๋ฉด์ ํ๋์ ViewController๊ฐ ๊ด๋ฆฌํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ UIView์์๋ ViewController ์์ View ๊ฐ์ฒด๊ฐ ์์ด๋ ํํ๋ก ์ฌ์ด ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ทธ์ค layer๋ UIView์ ์์์ ๋ฐ๊ณ , layer์๋ cornerRadius๋ borderColor ์ ๊ฐ์ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค. ๋ํ UIlabel ์ด๋ UIButton ๋ํ UIView์ ํน์ง์ ์์๋ฐ๊ธฐ ๋๋ฌธ์ XCode ๋ด ์ธ์คํํฐ ์์ญ์์ ์๋์์๋ถํฐ ์๋ก ์์๋ฐ์ ๊ด๊ณ์ฑ์ ํ์ธํ ์ ์์ต๋๋ค.
Scene ๊ณผ Logic ์ ์ฐ๊ฒฐ ๊ด๊ณ
์ด์ ์ฑ ๋ด์์ ๋จ์ํ ํ๋ฉด์ ํํํ๋ ๊ฒ์ ๋์ด ์ฑ์ด ๋์ํ๊ฒ ๋ง๋ค๊ธฐ ์ํด์๋, ViewController๋ฅผ ์์ํ๋ ๋ก์งํ์ผ์ ์์ฑํด์ผ ํฉ๋๋ค. CocoaTouchClass ๋ก ํด๋์ค ํ์ผ์ ์์ฑํ ํ ํด๋์ค์ ์ด๋ฆ๊ณผ ์์๋ฐ์ ์ํผํด๋์ค(Subclass of)๋ฅผ ์ง์ ํ๋ฉด ํ์ผ์ด ์์ฑ๋ฉ๋๋ค. ์ด๋ ํ์ผ์ ๋ฐ๋์ Main.storyboard์์ ์ถ๊ฐํ ViewController์ ์ข ๋ฅ์ ๊ฐ์์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ด์ Storyboard์ Scene๊ณผ ํด๋์ค ํ์ผ์ ์ฐ๊ฒฐํด์ผ ํ๋๋ฐ, ์ด๋ ์ด๋ค Scene๊ณผ ํด๋์ค ํ์ผ์ ์ฐ๊ฒฐํ ์ง ์๋์ผ๋ก ์ค์ ํ๋ ๊ณผ์ ์ด ํ์ํฉ๋๋ค.
์ด๋ ๊ฒ Class์ ์ด๋ค ํด๋์ค ํ์ผ์ ์ฐ๊ฒฐํ ์ง ์ ์ ํ Module ๊ณผ Inherit Module From Target ์ด ์ ์ฒดํฌ๋์ด ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด์ Scene ๊ณผ ํด๋์ค ํ์ผ์ด ์ ์ฐ๊ฒฐ๋ ๊ฒ์ ๋๋ค.
- @IBOutlet
์ฌ๊ธฐ์ ์์ธ๋ ์ด๋ผ๋ ์๋ก์ด ๊ฐ๋ ์ด ๋ฑ์ฅํฉ๋๋ค. ์ฑ ๋ด์ ํน์ ๋ทฐ๊ฐ ๋์ํ๊ฒ ๋ง๋ค๊ธฐ ์ํด์๋ ๋ณ์๋ฅผ ์ ์ธํด์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์, ๋ณ์ ์ ์ธ๊ณผ ๊ฐ์ ๊ฐ๋ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์์ธ๋ ์ ๋๋ค. ์ด๋ฅผ ์ ์ง ์์ผ๋ฉด ๋น์ฐํ ์ปดํจํฐ๋ ์ด๋ค ๊ฐ์ฒด๋ฅผ ๋์ํ๊ฒ ํด์ผ ํ ์ง ์ ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ์ ์ด์ผ ํฉ๋๋ค.
- @IBAction
์ด ๊ฐ๋ ์ ์ฌ์ฉ์์ ์ ์ค์ณ๋ฅผ ํตํด ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ ๊ฒฝ์ฐ์ ์คํ๋ ๊ธฐ๋ฅ์ ์ ์ํ ๋ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์๋ฅผ ๋ค์ด, Button์ ํด๋ฆญํ๋ฉด ๋๋คํ๊ฒ ์ฌ์ง์ด ๋ฐ๋๊ฒ ํ๋ ๋ฑ์ ๋์์ ๋ง๋ค ๋ ์ฌ์ฉํฉ๋๋ค.
'iOS > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
22.07.18 - 19 ใ ฃ Enum CaseIterable & Table View (0) | 2022.07.19 |
---|---|
22.07.13 ใ ฃ Class & Struct (0) | 2022.07.14 |
22.07.12 ใ ฃ์ด๊ฑฐํ & ํจ์์ ๋ฐํ๊ฐ & Raw String (0) | 2022.07.12 |
22.07.06 ใ ฃ์ฑ์ ์๋ช ์ฃผ๊ธฐ & AppDelegate vs SceneDelegate & ๋คํฌ ๋ชจ๋ & UIWindow (0) | 2022.07.06 |
22.07.04ใ ฃ ์ฑ์ ๊ตฌ์กฐ์ ๋์ ์๋ฆฌ & iOS ์ ํน์ง & Xcode ์ฃผ์ ๊ธฐ๋ฅ (0) | 2022.07.04 |