๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ฑ 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

728x90