๐ฑ Mobile (31) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ iOS - UIKit vs SwiftUI ์ ๋ํด์ (1) SwiftUI์ ๋ํด์ → 2023.07.16 - [iOS] - UIKit vs SwiftUI ์ ๋ํด์ - (1) UIKit ์ด๋? iOS ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ฅผ ๊ตฌ์ถํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ๋ ์์ํฌ์ด๋ค. Apple์์ ๊ฐ๋ฐํ UIKit์ iOS ๊ฐ๋ฐ์ ํต์ฌ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ์ฑ์ ํ๋ฉด ๊ตฌ์ฑ, ์ฌ์ฉ์ ์ ๋ ฅ ์ฒ๋ฆฌ, ์ ๋๋ฉ์ด์ , ๊ทธ๋ฆฌ๊ณ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฑ์ ๋ค๋ฃจ๋๋ฐ ํ์์ ์ธ ๋๊ตฌ๋ค์ ์ ๊ณตํ๋ค. UIKit์ ViewController์ Storyboard๋ฅผ ์ค์ฌ์ผ๋ก UI๋ฅผ ๊ฐ๋ฐํ๋ค. ์ธํฐํ์ด์ค ๋น๋๋ฅผ ์ฌ์ฉํด์ UI ์์๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ฐฐ์นํ๊ณ ์ฝ๋๋ก ์ด๋ฅผ ์กฐ์ํ๋ค. UIKit์ ์ฃผ์ ๊ธฐ๋ฅ๊ณผ ๊ตฌ์ฑ ์์ (์์ ์ฝ๋) UIView UIKit์ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์ฑ ์์์ด๋ค. ํ๋ฉด์ ๋ณด์ด๋ ๋ชจ๋ UI ๊ฐ์ฒด๋ค์ ๊ธฐ.. ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day6 ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day6 ์ง๋ ์๊ฐ๊น์ง๋ ๊ธฐ๋ณธ์ ์ธ ํ๋ฌํฐ ์์ ฏ์ ๋ดค์๋ค. ์ด๋ฒ์๋ ๊ณ์ฐ๊ธฐ ์ฑ์ ๋ง๋ค์ด์ ์ฌ์ฉ์์ ์ํธ์์ฉ์ ํ๋ ์์ ฏ์ ๋ณด๋ ค๊ณ ํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฒํผ์ ์ฌ์ฉ์๊ฐ ๋๋ ์ ๋ onPressed๋ผ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค. ๋ง์ ๊ณ์ฐ๊ธฐ ์ฑ ๋ง๋ค๊ธฐ 1. ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ main.dart ํ์ผ์์ Column์ ์ฌ์ฉํ ์ ์๊ฒ StatefulWidget์ ๋ง๋ ๋ค. 2. Column์ children์ ์ ์ธํ ํ ์ฐจ๋ก๋๋ก Text, Textfield, ElevateButton ์์ ฏ์ ์ถ๊ฐํ๋ค. ElevateButton ์์ ฏ์ onPressed๋ ๋ฒํผ์ด ๋๋ ธ์ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ์ด๋ค. child : Column( children : [ Text('flutter'), TextField(), Ele.. ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day5 ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day5 ์ง๊ธ๋ถํฐ๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ํ๋ฌํฐ ์ฑ์ ๊ฐ๋ฐํ๋ ๋ฐ ํ์ํ ๋ด์ฉ์ ํ๋์ฉ ์ดํด๋ณด๋ ค๊ณ ํ๋ค. ๊ทธ ์ค์์ ๊ตฌ๊ธ์ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ์ด ์ ์ฉ๋ ์์ ฏ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ์ฑ์ ์ด๋ฏธ์ง, ํฐํธ ๋ฑ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ ๋ฑ ๊ณต๋ถํ ๊ฒ์ด๋ค. ์ค์บํด๋๋ฅผ ์ด์ฉํ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ ์ ์ฉ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ์ ๊ตฌ๊ธ์์ 2014๋ ๋ถํฐ ์ฌ์ฉํ ํ๋ซ ๋์์ธ ์ง์นจ์ด๋ค. ๋จธํฐ๋ฆฌ์ผ ๋์์ธ์ ์ ์ฉํ๋ฉด ํ๋ฉด, ๋จ์ ์์ฃผ์ ๊ฐ๊ฒฐํ ๋์์ธ์ ๋ฐํ์ผ๋ก ์ฑ์ ์ฉ๋์ ์ค์ด๊ณ ๋์์ ์๋๋ฅผ ๊ฐ์ ํ ์ ์๋ค. ํ๋ฌํฐ ์ฑ์ ์ ์ํ ๋ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ์ ์ ์ฉํ๋ ค๋ฉด ์ค์บํด๋ ํด๋์ค๋ฅผ ์ด์ฉํ๋ค. ์ค์บํด๋ ํด๋์ค๋ ๊ฐ์ข ์์ ฏ์ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ ๋ ์ด์์์ผ๋ก ์ค๊ณํ๋ ๊ฒ์ ๋๋๋ค. ์ ๋ชฉ ์ค ์ถ๊ฐํ๊ธฐ 1. ์ค์บํด๋์ appBar๋ฅผ ์ ์ธํ๊ณ ์๋ก์ด AppBar.. ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day4 ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day4 ์์ ฏ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์๋ฉด ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์์ง, ๊ทธ๋ฆฌ๊ณ ํ๋ฉด์ด ์ฌ๋ผ์ง ๋ ์ด๋ค ๋ก์ง์ ์ฒ๋ฆฌํด์ผ ํ ์ง๋ฅผ ์ ๋ฆฌํด์ ๋ฃ์ ์ ์๋ค. ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ดํดํ๋ฉด ์ฑ์ ๋์์ด๋ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค. ์คํ ์ดํธ๋ฆฌ์ค ์์ ฏ์ ํ ๋ฒ ๋ง๋ค์ด์ง๋ฉด ๊ฐฑ์ ํ ์ ์์ผ๋ฏ๋ก ์๋ช ์ฃผ๊ธฐ๊ฐ ์๋ค. ์ฆ, ๋ค๋ฅธ ํ๋ฉด์ผ๋ก ๋์ด๊ฐ๋ฉด ๋ชจ๋ ๋ก์ง์ด ์ข ๋ฃ๋๋ค. ๊ทธ๋ฌ๋ ์คํ ์ดํธํ ์์ ฏ์ 10๋จ๊ณ๋ก ๊ตฌ๋ถํ๋ ์๋ช ์ฃผ๊ธฐ๊ฐ ์๋ค. ์์ ๋ถ์ ๋ฒํธ์์ผ๋ก ์๋ช ์ฃผ๊ธฐ๊ฐ ์งํ๋๋ฏ๋ก ์์๋ ๋์ฌ๊ฒจ๋ด์ผ ํ๋ค. ์ํ๋ฅผ ์์ฑํ๋ createState() ํจ์ ๋จผ์ StatefulWidget ํด๋์ค๋ฅผ ์์๋ฐ๋ ํด๋์ค๋ ๋ฐ๋์ createState() ํจ์๋ฅผ ํธ์ถํด์ผ ํ๋ค. ์ด ํจ์๋ ๋ค๋ฅธ ์๋ช ์ฃผ๊ธฐ ํจ์๋ค์ด ํฌํจ๋ State ํด๋์ค๋ฅผ ๋ฐํํ.. ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day3 ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day3 ํ๋ฌํฐ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ฉด ๋ง์ ํ์ผ๊ณผ ํด๋๊ฐ ์๋์ผ๋ก ์์ฑ๋๋ค. ์ด๋ฌํ ํ๋ฌํฐ ํ๋ก์ ํธ์ ๊ตฌ์ฑ์ ์ดํด๋ณด๋๋ก ํ๋ค. ๊ทธ๋ฆฌ๊ณ , ํ๋ฌํฐ ์ฑ ๊ฐ๋ฐ์์ ํต์ฌ์ธ ์์ ฏ๊ณผ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์์๋ณด๋ ค๊ณ ํ๋ค. ํ๋ฌํฐ ํ๋ก์ ํธ ๊ตฌ์กฐ ํด๋ ๋ด์ฉ ๋น๊ณ android ์๋๋ก์ด๋ ํ๋ก์ ํธ ๊ด๋ จ ํ์ผ ์๋๋ก์ด๋ ์คํ๋์ค๋ก ์คํ ๊ฐ๋ฅ iOS iOS ํ๋ก์ ํธ ๊ด๋ จ ํ์ผ ์์ค์ฝ๋๋ก ์คํ ๊ฐ๋ฅ(๋งฅ ์ ์ฉ) lib ํ๋ฌํฐ ์ฑ ๊ฐ๋ฐ์ ์ํ ๋คํธ ํ์ผ ํ๋ฌํฐ SDK ์ค์น ํ์ test ํ๋ฌํฐ ์ฑ ๊ฐ๋ฐ ์ค ํ ์คํธ ํ์ผ ํ ์คํธ ํธ์์ฑ ์ ๊ณต ๋ฃจํธ์์๋ ์ฌ๋ฌ ํ์ผ์ด ์์ง๋ง, ์ฌ๊ธฐ์ ์ฃผ๋ชฉํ ํ์ผ์ pubspec.yaml์ด๋ค. pubspec.yaml ํ์ผ์ ํ๋ฌํฐ์์ ๋ค์ํ ํจํค์ง์ ์ด๋ฏธ์ง, ํฐํธ ๋ฑ์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค. ์ํ .. ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day2 ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day2 ์ค๋์ ๋คํธ ์ธ์ด๋ฅผ ์ด์ฉํ์ฌ ๊ฐ๋จํ ํ๋ก๊ทธ๋จ์ ๊ตฌํํด๋ณด๋ ค๊ณ ํ๋ค. ๊ตฌ๊ตฌ๋จ ํ๋ก๊ทธ๋จ 2~9๋จ๊น์ง ๊ตฌ๊ตฌ๋จ์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ด๋ค. for๋ฌธ์ ์ค์ฒฉํด์ ์ฝ๋๋ฅผ ์ง ๋ค. void main() { for (int i = 2; i ์ด์ 1 2 3 4 5 6 ๋ค์