2023.10 ๊ธฐ์ค SwiftUI์์ life cycle updates modifier๋ก ์ง์ ๋ ๊ฒ์ 4๊ฐ์ด๋ค. ์ฌ๊ธฐ์ ๋ง์ง๋ง task๋ task๋ง ๋ฐ๋ก ํ๋ฒ ํ๋ณด๊ธฐ๋ก ํ๊ณ onAppear, onDisappear, task ์์๋ด
์๋ค ๋ค ๋๋ฃจ์~ SwiftUI์์ ํ๋ฉด์ ์ ํํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋ค. UIKit์์ ViewController๋ฅผ ์ฌ์ฉํ์ ๋๋ ํ๋ฉด ์ ํ๋๋ View๋ฅผ ViewController๋ก ๋ช
ํํ ๊ตฌ๋ถํ ์ ์๋ ๋จ์๊ฐ ์์์ง๋ง SwiftUI ์์๋ view๋ผ๋ ๋จ์๊ฐ ๋ช
ํํ๊ฒ ๊ตฌ๋ถ๋์ด ์๊ธฐ ๋ณด๋ค๋ View๊ฐ View๋ฅผ ๊ฐ์ธ๊ณ ์๊ฑฐ๋ ๋ค๋ฅธ View์ ์ผ๋ถ๋ถ์ด ๋ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๊ณ ๋ คํด์ ์์๋ด์ผ ํ๋ค. ์ฐ์ ๊ฐ modifire์ ๊ฐ๋จํ ์ดํด๋ณด๋ฉด onAppear func o..
๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
* advanced๊ฐ ๊ธ ์์ ๋ถ์ผ๋ฉด ์ด๋ก + ์ค์ ์์ฉ ๋ด์ฉ์ ๋ด๊ณ ์์ต๋๋ค~ Environment์ keypath๋ฅผ ํตํด์ SwiftUI์์ ๋ฏธ๋ฆฌ ์ง์ ๋ ๊ฐ์ ์ฌ์ฉํ ์ ์๋ค. @Environment(\.layoutDirection) var layoutDirection @Environment(\.dismiss) var dismiss ๊ฐ๊ฐ View์ ๋ฐฉํฅ, ๋ทฐ๋ฅผ dismiss ํ๊ธฐ ์ํ ๊ฐ์ Environment ํ๋กํผํฐ ๋ํผ๋ฅผ ํตํด์ ์ป์ ์ ์๋ค. ๋น์ฐํ ์ง์ ์ปค์คํ
๋ ๊ฐ๋ฅํ๋ค. Environment์ EnvironmentObject๋ ์ฌ๋ฌ View์ ๊ฑธ์ณ์ ์ฌ์ฉํ ๊ฐ์ ์ ๋ฌํ ๋ ์ฌ์ฉ๋ ์ ์๋๋ฐ ์ค๋์ ๊ทธ ์ค์์ Environment ์์๋ณด๊ธฐ! Environment Values Environmen..
predicates๋ ํ๊ตญ์ด๋ก ๋ฒ์ญํ๋ฉด ์ ์ด๋ผ๊ณ ๋ฒ์ญํ ์ ์๋๋ฐ ์ด๋ ๋
ผ๋ฆฌ์ ์ธ ์กฐ๊ฑด์์ ์๋ฏธํจ. SwiftData๋ predicates๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ๊ณ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๋ค. ๋
ผ๋ฆฌ์ ์กฐ๊ฑด์ ์ ์ํ ์ ์๊ณ ๊ตฌ์ฒด์ ์ธ ๋ฐ์ดํฐ๋ฅผ ํ๋ํ ์ ์๋ค. SwiftData์ Schema๋ฅผ ์ ์ํ๊ธฐ ์ํด Model์ ๊ตฌ์ฑํ ๋ enum ์ด๋ image ํ์
์ ์ฌ์ฉํ ์๋ ์์. Relationship ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ํผ์ ์กด์ฌํ๋ ๊ฐ์ฒด๋ ์๊ณ , ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ทธ ๊ด๊ณ๋ฅผ ๊ธฐ์ ํ๋ ๊ฒ์ ์ค์ํ๋ค. ๋ค:๋ค ๊ด๊ณ A๋ผ๋ ๋ชจ๋ธ์ด B๋ชจ๋ธ์ ์ฌ๋ฌ๊ฐ ๊ฐ์ง๊ณ ์์ ์ ์๊ณ , B๋ผ๋ ๋ชจ๋ธ์ด A๋ผ๋ ๋ชจ๋ธ์ ์ฌ๋ฌ๊ฐ ๊ฐ์ง ์ ์์๋ ๋ค:๋ค ๊ด๊ณ๋ผ๊ณ ํ๋ค. /// ์ ์ ์ ๋ณด @Model class ..
๋ฆฌ์คํธ๋ ์๋น์ค ๋๊ณ ์๋ ์ฑ์์ ๋น ์ง์ง ์๊ณ ๋ฑ์ฅํ๋ UI ์ค ํ๋์
๋๋ค. ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ๋ถํฐ ํ๋ฒ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์๋ ์ผ๋ถ๋ง ๊ฐ์ ธ์จ ๋ค ์ฌ์ฉ์๊ฐ ๊ทธ ์ผ๋ถ๋ฅผ ๋ค ๋ณด๋ฉด ์๋ก์ด ๋ชฉ๋ก์ ์๋ฒ๋ก ๋ถํฐ ๊ฐ์ง๊ณ ์ค๋ ๋ฐฉ์์ด ์๋๋ฐ ์ด๋ฅผ load more ํน์ infinite scroll ์ด๋ผ๊ณ ํฉ๋๋ค. SwiftUI์์๋ ๋ฆฌ์คํธ๋ฅผ ์ํ ์ฌ๋ฌ๊ฐ์ง View๋ค์ด ์ ๊ณต๋ฉ๋๋ค. ๊ทธ ์ค์ VStack์ ์์ดํ
๋ค์ ์ธ๋ก ๋ฐฉํฅ์ผ๋ก ์์ต๋๋ค. ์ด VStack์ด ScrollView์ ๋ง๋๋ฉด ์ ํฌ๊ฐ UIKit์์ ๋ณด์๋ UITableView ํน์ UICollectionView์ ๋์ผํ UI๋ฅผ ๊ตฌ์ฑํ ์ ์์ด์. ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ LazyVStack์ด๋ผ๋ ๊ฒ์ด ์์ต๋๋ค! ๊ฐ์ ์ด๋์ ์ฌ์ฉํ๋๊ฒ ์ข์๊น์? ์ฐจ์ด์ ๊ณผ ๊ฐ๊ฐ ๋์ํ๋ ..
๋ช ๋
๋์ ํ ์ฃผ์ 2๋ฒ ์ ๋ ํ๋ ์ง์ธ๋ค๊ณผ์ ํ๊ณ ๋ชจ์์ด ๋๋ฌ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฒ์ ์ด์ง์ ํ๋ฉด์ ๊ธฐ๋ก์ ์ค์์ฑ์ ๋๊ผ์ด์. ๊ธฐ๋ก์ด ์์ผ๋ฉด ๊ทธ์ ์๊ฐ ์์์ ์ค์ณ ์ง๋๊ฐ๋ฒ๋ฆฌ๋๋ผ๊ตฌ์. ์ ๊ฐ ๊ณผ๊ฑฐ์ ๋ฌด์์ ํ๋์ง ์ผ๋ง๋ ์ฑ์ฅํ๋์ง ์๊ณ ์๋ฆด๋ ค๋ฉด ๊ธฐ๋ก์ ํด์ผ ๊ฒ ๊ตฌ๋ ์ถ๋๋ผ๊ตฌ์. ํ์ฌ์์ ๋งค์ฃผ ํ๊ณ ๋ชจ์์ ์งํํ๋ ๋ ์ด์์ ํ๊ณ ๋ชจ์ ๊ฐ์
์ ๊ทธ๋ง ๋๊ณ ์ค์ค๋ก ํฌ์คํ
ํ๋ฉฐ ๋๋์๋ณด๊ธฐ๋ก ํ์ต๋๋ค! (์ง๊ธ ์ด ์์ ์๋ ๋ค๋ฅธ ๋ชจ์ ํ๋๋ฅผ ์ถ์ฒ ๋ฐ์๋๋ฐ ํ ๊น ๋ง๊น ์ ๋ง ๊ณ ๋ฏผ์ด์
๋๋นใ
ใ
๋ค๋ฅธ ๋ถ์ผ ์ฌ๋๋ค ๋ง๋ ์ ์๋๊ฒ ํ์น ์์์..) ์๊ฐ๋ณด๋ค TMI๋ผ ์๋ฌด๋ ์ ์ฝ์์ผ๋ฉด ์ข๊ฒ ์ง๋ง ๊ทธ๋๋ ๋๊ตฐ๊ฐ๊ฐ ์ฝ๊ณ ํผ๋๋ฐฑ ํด์ค๋ค๋ฉด ํ๋ณตํ ๊ฒ ๊ฐ์.. ์ฐ์ ์ ์ด๋ด
๋๋น .. ๐ฎ Q1 (1 ~ 3์) ํ๋ก์ ํธ์ ์ฐ์ ์๋
22๋
6..
๋ค๋น๊ฒ์ด์
์ ๋ค๋ฅธ ์คํฌ๋ฆฐ๊ณผ ๋ทฐ ์ฌ์ด๋ฅผ ์ด๋ํ๊ณ ํ์ํ ์ ์๊ฒ ํด์ค UINavigationController์ ๋ง์ฐฌ๊ฐ์ง๋ก navigationStack์ ๊ด๋ฆฌํ๋ฉฐ NavigationBar ๋ฅผ ์ ๊ณตํ์ฌ ํ๋ฉด๊ฐ ์ด๋์ ์ง์ NavigationView๋ iOS ๊ธฐ์ค 13.0 ~ 17.0 ์ฌ์ฉ๊ฐ๋ฅํ๋ฉฐ deprecated ์์ ์ด๊ธฐ ๋๋ฌธ์ iOS 16.0 ๋ถํฐ ์ง์ํ๋ ํ๋ก์ ํธ๋ผ๋ฉด NavigationStack์ ์ฌ์ฉ NavigationLink NavigationStack, NavigationSplitView ๋ฟ๋ง ์๋๋ผ NavigationView์์๋ ์ฌ์ฉ ๊ฐ๋ฅ struct NavigationLink where Label : View, Destination : View label์ ํ์ฌ ํ๋ฉด์ ๋ณด์ด๋ ๋ทฐ๋ก์ Navi..
Background Problems ๊ธฐ์กด ํ๋ก์ ํธ๋ NavigationView๋ NavigationStack์ด ์๋ค. ํ๋ฉด ์ด๋์ ํ๊ณ ์ ํ ๋๋ ์ด๋ ํ View๋ฅผ ZStack์ ์ฌ์ฉํด์ ๊ธฐ์กด ๋ทฐ ์์ ๋ฎ์ด ์์ฐ๋ ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์๋ค. ์ฌ๊ธฐ์ navigation push ์ ๋๋ฉ์ด์
ํจ๊ณผ๋ฅผ ์ฃผ๊ธฐ ์ํด ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ๋ฐ๊ณ ๋ค์ด์ค๋ ๋ฏํ ์ ๋๋ฉ์ด์
์ด ๋ค์ด๊ฐ ์๋ค. ๋ฉ์ธ์๋ ํญ๋ทฐ๊ฐ ์กด์ฌํ๊ณ ๊ฐ ํญ์๋ rootView๋ผ๊ณ ํ ์ ์๋ View๊ฐ ์กด์ฌํ๋ค. rootView์์ ์์ธ๋ก ์ด๋ํ๋ฉด ์ด ์์ธ ํ๋ฉด์ ํญ๋ฐ๋ฅผ ๊ฐ๋ฆฌ๋ฉด์ ํ๋ฉด ์ ์ฒด๋ฅผ ์ฐจ์งํด์ผ ํ๋ค. ํญ๋ทฐ๊ฐ ๋ณด์ด์ง ์์์ผ ํ๋ฏ๋ก window์์ UITabBar์ ์ฐพ๊ณ window ์ ์ฒด offset์ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ณ ์์๋๋ฐ ํญ๋ทฐ๋ฅผ ๊ฐ๋ฆฌ๊ณ ๋ณด์ด๊ฒ ..
๋์ผํ UI ๊ตฌ์ฑ์ ๊ฐ์ง์ง๋ง ๊ฐ๋ก๋ชจ๋์์ ์ธ๋ก๋ชจ๋๋ก ๋ณ๊ฒฝ๋ ๋ ํ๋ฉด์ ๋์ด๊ฐ ๋ฌ๋ผ์ง๊ฒ ๋ฉ๋๋ค. ํน์ UI์์๋ ํ๋ฉด์ด ๊นจ์ง ์ ์์ด์ ์ด์ ๋์ํด์ผ ํด์. ViewBuilder๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ํ๋ฉด์์ ๋์ ๊ฐ๋ฅํ View๋ฅผ ์์ฑํ ์ ์์ต๋๋ค! ํน์ ViewBuilder๊ฐ ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด ์๋ ํฌ์คํ
์ ์ฐธ๊ณ ํ์ธ์! [SwiftUI] ViewBuilder ์์๋ณด๊ธฐ Definition @resultBuilder struct ViewBuilder ํด๋ก์ ์์ ๋ทฐ๋ฅผ ๊ตฌ์ฑํ๋ ์ฌ์ฉ์ ์ง์ ํ๋ผ๋ฏธํฐ ์์ฑ func contextMenu( @ViewBuilder menuItems: () -> MenuItems ) -> some View ํด๋ก์ ํ๋ผ๋ฏธํฐ๋ฅผ ํตํด child view๋ฅผ ์์ฑํ๊ณ ์ framios.tis..