# SwiftUI - Minsup๐Ÿ‘ฎ๐Ÿปโ€โ™‚๏ธ, Mint๐Ÿ˜ˆ, Whales๐Ÿฌ ### ๐Ÿ‘จโ€๐Ÿ”ฌ ์‹คํ—˜ 1: Toggle View ๊ตฌํ˜„ํ•˜๊ธฐ ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์—๋Š” Experiment_SwiftUIApp, Model, ContentView, ToggleView ๋„ค ๊ฐœ์˜ ํŒŒ์ผ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. Step1์—์„œ๋Š” ์ด ์ค‘ ToggleView ํŒŒ์ผ๋งŒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. #### ๐Ÿ“‹ Todo - `ToggleView`์˜ ํŒŒ์ผ์˜ View๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š”์ง€๋ฅผ ๋ถ„์„ํ•ด๋ด…์‹œ๋‹ค. - ZStack์•ˆ์— RoundedRectangle์ด ์žˆ๊ณ  VStack์ด ์žˆ์Šต๋‹ˆ๋‹ค. ZStack์€ z์ถ• ๋ฐฉํ–ฅ์œผ๋กœ ๋ทฐ๋ฅผ ์Œ“๊ธฐ ๋•Œ๋ฌธ์— RoundedRectangle์ด ๋ฐ”๋‹ฅ์— ์œ„์น˜ํ•˜๊ณ  ๊ทธ ์œ„์— VStack์ด ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. VStack์€ ์ˆ˜์ง์œผ๋กœ ์Œ“๊ธฐ ๋•Œ๋ฌธ์— Text ๋ฐ‘์— ํ† ๊ธ€ ๋ฒ„ํŠผ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. - `stateToggle` ์„ ๋ˆ„๋ฅผ ๋•Œ View์—๋Š” ์–ด๋–ค ๋ณ€ํ™”๊ฐ€ ์žˆ์„๊นŒ์š”? - `isStateToggleOn`์˜ ๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด์„œ ๋ทฐ๊ฐ€ ์ƒˆ๋กญ๊ฒŒ ๊ทธ๋ ค์ง‘๋‹ˆ๋‹ค. - `stateToggle` ํ† ๊ธ€ ์Šค์œ„์น˜๊ฐ€ ์ผœ์ ธ์žˆ์œผ๋ฉด Text์— `State On` ์ด, ํ† ๊ธ€ ์Šค์œ„์น˜๊ฐ€ ๊บผ์ ธ์žˆ์œผ๋ฉด Text์— `State Off` ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ์š”? ```swift VStack { if isStateToggleOn { Text("State On") } else { Text("State Off") } Toggle("State", isOn: $isStateToggleOn) .padding() } ``` - `State PropertyWrapper`๋Š” View์—์„œ ์–ด๋–ค ์—ญํ• ์„ ํ• ๊นŒ์š”? - Struct์—์„œ๋Š” ์†์„ฑ ๊ฐ’์„ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด mutating์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. mutating์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด Value Type์€ ์Šค์Šค๋กœ ์†์„ฑ ๊ฐ’์„ ๋ฐ”๊พธ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. State๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์†์„ฑ ๊ฐ’์ด ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•œ ํ›„ struct์„ ์žฌ์ƒ์„ฑํ•˜์—ฌ ๋ทฐ๋ฅผ ๋‹ค์‹œ ๊ทธ๋ฆฌ๋Š” ์—ญํ• ์„ ํ•ด์ค๋‹ˆ๋‹ค. ### ๐Ÿ‘จโ€๐Ÿ”ฌ ์‹คํ—˜ 2: ToggleView ๋„ค ๊ฐœ๋ฅผ ์กฐํ•ฉํ•ด ContentView ์ƒ์„ฑ #### ๐Ÿ“‹ Todo ContentView ํŒŒ์ผ์—์„œ ํ•˜์œ„ View๋ฅผ ์กฐํ•ฉํ•ด ์‚ฌ์ง„๊ณผ ๊ฐ™์€ UI๋ฅผ ๋งŒ๋“ค์–ด๋ด…์‹œ๋‹ค. Stack , ๋˜๋Š”LazyVGrid ํ™œ์šฉ ### ๐Ÿ‘จโ€๐Ÿ”ฌ ์‹คํ—˜ 3: ์—ฌ๋Ÿฌ ๋ทฐ๊ฐ€ ๋™์‹œ์— ๊ด€์ฐฐํ•˜๋Š” Property ์ƒ์„ฑ #### ๐Ÿ“‹ Todo Model ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ, ์ด๋ฅผ ๊ด€์ฐฐํ•˜๊ณ  ์žˆ๋Š” View๊ฐ€ ์ž๋™์ ์œผ๋กœ ๊ฐฑ์‹ ๋˜๊ฒŒ ํ•ด๋ด…์‹œ๋‹ค. ObservedObject, StateObject, EnvironmentObject ์ค‘ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•ด์„œ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์€ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๊ณ , ์‚ฌ์šฉ๋ฒ•์— ์žˆ์„๊นŒ์š”? - ์ƒ์„ฑํ•˜๋Š” ์ชฝ : ObservedObject, StateObject - ๋ฐ›๋Š” ์ชฝ : EnvironmentObject (๋ถ€๋ชจ๋กœ๋ถ€ํ„ฐ ์ฃผ์–ด์ง„ ๊ฒƒ๋“ค. ํ™˜๊ฒฝ)