ios
-
SwiftUI - TabViewSwiftUI 2022. 4. 9. 12:38
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI ๋ด์์ ๊ธฐ๋ณธ ์ ํ์์ ์ ๊ณตํ๋ TabView์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค๐ ์ฃผ๋ก ์ฑ์ ๊ตฌ์ฑํ๋ค๋ณด๋ฉด ํ๋จ์ ํ / ์ค์ ๋ฑ ๋ฉ๋ด๋ก ๊ฐ ์ ์๋ TabBar์ ๋ํด ๊ผญ ๊ตฌ์ฑํ๊ณค ํฉ๋๋ค. ์ด๋ป๊ฒ ๋ณด๋ฉด ์๋ ์ฑ์ ์ฐพ๊ธฐ๊ฐ ๋ ์ด๋ ค์ธ์ ๋์ ๋๋ค๐ฅฒ ๋ฐ๋ก ์๋ฐ๊ฑฐ์! ๊ทธ๋์ ์ด๋ฒ ํฌ์คํ ์์ ์ด๊ฑธ ๊ตฌ์ฑํ ์ ์๋ TabView์ ๋ํด ์์๋ณด๊ณ ๊ตฌํํด๋ณผ๊ป์ใ ใ TabView? ๊ณต์๋ฌธ์๋ฅผ ํํด์ณ๋ณด์ฃ ! ํญ๋ทฐ์ ์ ์๋ ๋ํํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์๋ฅผ ์ฌ์ฉํด ์ฌ๋ฌ ํ์ ๋ทฐ ๊ฐ ์ ํํ ์ ์๋๋ก ํ๋ ๋ทฐ์ ๋๋ค. ์ฆ ๋ค๋ค ํํ ์๊ณ ์๋ ํญ๋ฐ์ ํญ๋ชฉ๋ค์ ํด๋ฆญํด ๋ทฐ๋ฅผ ์ ํํ ์ ์๊ฒ ํด์ฃผ๋๊ฒ์ ๋๋ค. TabView ์ ์ธ struct TabView where SelectionValue : H..
-
CasePathTCA 2022. 4. 6. 09:47
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ CasePath์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ ์ ๋ ์ฃผ๋ก ์์ Composable Architecture(TCA)๋ฅผ ์ฌ์ฉํ๋๋ฐ ํ reducer๋ฅผ pullback ๋ฐ์์ฌ๋ keypath์๋ ๋ค๋ฅธ casepath๋ฅผ ๋ณผ ์ ์์๊ธฐ์ ์ด๊ฒ์ ๋ํด ๋ญํ๋ ์น๊ตฌ์ธ์ง ์์๋ณด๋ คํฉ๋๋ค! ์ฐ์ ์ด ์น๊ตฌ๋ ์ด๋ฆ์์๋ ๋๊ปด์ง์ง๋ง keypath์ ๋น์ทํ ์ญํ ์ ํด์ฃผ๋ ์น๊ตฌ๊ฐ์ฃ ? ๊ทธ๋ผ ์ด์ ์์๋ณด์์ฃ ! CasePath? CasePath๋ Swift์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํด์ฃผ๋ keypath๊ฐ์ ์น๊ตฌ๋ ์๋๋๋ค. ์ฆ, TCA๋ฅผ ๋ง๋ pointfreeco์์ ์ปค์คํ ํ๊ฒ ๋ง๋ค์ด์ค ์คํผ๋ ์ดํฐ์ ๋๋ค. ๊ทธ๋ผ์ผ๋ก ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ ๋๋ก ๋ณด๊ฒ ์ต๋๋ค. (์ฌ์ค ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ์ ๋ ํผ๋ฐ์ค๋ ๋ค ๋ฒ์ญ์ ๊ฑฐ์น๊ฒ์ด..
-
DarkModeiOS 2022. 3. 31. 20:51
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ๋คํฌ๋ชจ๋์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค๐๐ป ๋คํฌ๋ชจ๋? ๋คํฌ๋ชจ๋๋ iOS 13 ์ด์์์ ํํ๋ค ๋งํ๋ ์ค์ ์์ ๋๋ฐ์ด์ค ์์ฒด๋ฅผ ๋คํฌ๋ชจ๋๋ก ์ค์ ํ๋ฉด ์ ์ฒด์ ์ผ๋ก ์ด๋์ด ํ ๋ง์ ์์คํ ์ ์ฑํํ๋๋ก ํ ์ ์์ต๋๋ค. ํน์ง์ ์ด๋์์ง๋๋งํผ ๋ ๋ง์ ์๋๊ฐ์ ์ฌ์ฉํด ์ ๊ฒฝ ์ปจํ ์ธ ๋ค์ ๋ ๋ถ๊ฐ์์ผ์ค๋๋ค. ์ฑ์์ ๋คํฌ/๋ผ์ดํธ ๋ชจ๋ ๋์ ์ ์ฃผ์์ 1. ์ฑ๋ ๋คํฌ๋ชจ๋์ ๋ฐ๋ผ ์ ๋ฐ์ํด์ผํฉ๋๋ค. 2. ๋ผ์ดํธ/๋คํฌ ๋ชจ๋์์ ๋์์ธ์ด ์๋ํ๋ฐ์ ๊ฐ์ด ์ ์์ ์ธ์ง ํ ์คํธํด์ผํฉ๋๋ค. 3. ๋๋น ๋ฐ ํฌ๋ช ๋ ๋ฑ ์ ๊ทผ์ฑ ์ค์ ์ ์กฐ์ ํ์๋์๋ ๋คํฌ๋ชจ๋์์ ๊ฐ๋ ์ฑ์ด ์ข์์ง ํ์ธํด์ผํฉ๋๋ค. ๋คํฌ๋ชจ๋ ์์ ๊ด๋ จ ๋คํฌ๋ชจ๋์ ์์์ ์ ํํ ๋๋ ์ค์ํ ์ฌํญ๋ค์ด ์กฐ๊ธ ์์ต๋๋ค. 1. ์์คํ ๋ฐฐ๊ฒฝ์ ์ ํธ - ๋คํฌ๋ชจ๋๋ ..
-
Combine - ConnectablePublisherCombine 2022. 3. 28. 20:20
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ์ ์๊ฐ์์ multicast์ share๋ฅผ ํ์ตํ๋ฉด์ ์ด์ง ์ค์น๋ฏ์ด ๋งํ๊ณ ๊ฐ ConnectablePublisher์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐๐ป ์ฐ์ ๋ง์ฝ ์ด์ ํฌ์คํ ์ธ multicast์ share๋ฅผ ๋ชป๋ณด์ จ๋ค๋ฉด ๋ณด๊ณ ์ค์๋๊ฑธ ์ถ์ฒํด์! https://green1229.tistory.com/230 Combine - multicast / share ์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ๋ค์ ์ปด๋ฐ์ธ ์ธ๊ณ๋ก ๋์์ multicast์ share์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค๐๐ป ์ฐ์ ์ด๋ค๊ฑธ ํ๋ ์น๊ตฌ๋ค์ด๋!? ํ๋์ Publisher๋ก ๋ถํฐ ๊ตฌ๋ ์ ํ ์ฌ๋ฌ Subs green1229.tistory.com ์ด์ ํฌ์คํ ์์ ์ธ๊ธํ ConnectablePublisher์ ๋ํ ..
-
Combine - multicast / shareCombine 2022. 3. 24. 20:01
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ๋ค์ ์ปด๋ฐ์ธ ์ธ๊ณ๋ก ๋์์ multicast์ share์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค๐๐ป ์ฐ์ ์ด๋ค๊ฑธ ํ๋ ์น๊ตฌ๋ค์ด๋!? ํ๋์ Publisher๋ก ๋ถํฐ ๊ตฌ๋ ์ ํ ์ฌ๋ฌ Subscriber๋ค์๊ฒ ๊ฐ๊ฐ ์ด๋ฒคํธ๋ฅผ ์ฌ๋ฌ๋ฒ ๋ฐํํ๋๊ฒ ์๋๋ผ ํ๋์ ์์์ ํ๋ฒ์ ์ด๋ฒคํธ๋ง ๋ฐ์์์ผ์ค ์ ์๋๋ก ํด์ฃผ๋ ์น๊ตฌ๋ค์ ๋๋ค๐ ์ด๋ฒ๊ฑด ๊ฝค๋ ๊ฐ๋จํ ์ดํด๋ ์ ์์ผ๋ ํ๋ฒ ํด๋ณด์์ฃ ! multicast ๊ณต์๋ฌธ์๋ฅผ ๋ณด๋ฉด ํด๋ก์ ๋ฅผ ์ ์ฉํด ๊ตฌ๋ ์์๊ฒ ์์๋ฅผ ์ ๋ฌํ๋ subject๋ฅผ ๋ง๋ค์ด์ค๋ค๊ณ ํด์. ์ญ์ ๊ณต์๋ฌธ์์ ์ ์๋ ์ด๋ ค์...๐คฏ ์ฐ์ ๊ทธ๋ฌ๋ ค๋~ ํ๊ณ ์ ์๋ ์ฝ๋๋ฅผ ๋ณด์์ฃ ! func multicast(_ createSubject: @escaping () -> S) -> Publishers.Mul..
-
SwiftUI - @State / @Binding / @StateObject / @EnvironmentObjectSwiftUI 2022. 3. 21. 20:15
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ์ ํฌ์คํ ์ ์ด์ด SwiftUI์์ ๊ตฌ์กฐ์ฒด ๋ด๋ถ์์ ๊ฐ์ ๋ณ๊ฒฝํ์ฌ ๋ฐ์ํด์ฃผ๊ฑฐ๋ ์ ์ญ์ ์ผ๋ก ๊ฐ์ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ํด์ฃผ๋ ๊ทธ๋ฐ ์น๊ตฌ๋ค์ธ ํ์ดํ์ ์ธ์น๊ตฌ ์ฆ, @State, @Binding, @StateObject, @EnvironmentObject์ ๋ํด์ ํ์ตํด๋ณด๊ฒ ์๋๋ค๐๐ป ์ฐ์ ํ๋์ฉ ์ฐจ๋ก๋๋ก ์งํํด๋ณด๊ฒ ์ต๋๋ค๐ @State ์ ์๋ฅผ ๋จผ์ ๋ณด๋ฉด, SwiftUI์์ ๊ฐ์ ์ฝ๊ณ ์ธ ์ ์๋ ์ ํ์ ์ด๋ ธํ ์ด์ ์ ๋๋ค. @frozen @propertyWrapper struct State ์ญ์ propertyWrapper์ด๊ณ ๊ตฌ์กฐ์ฒด์ ๋๋ค. SwiftUI์์ ์ฐ์ ๋ทฐ๋ ๊ตฌ์กฐ์ฒด์ ๋๋ค. ์ฆ, ๋ด๋ถ ๊ฐ์ ๋ณ๊ฒฝํด์ค ์ ์๋๋ฐ ์ด @State๋ฅผ ์ด์ฉํด ๋ณ๊ฒฝํด์ค ์ ์์ต๋๋ค. ๋ํ ๊ตฌ์กฐ์ฒด์ด๊ธฐ..
-
Combine - ObservableObject / @Published / @ObservedObjectCombine 2022. 3. 17. 21:00
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ObservableObject๋ผ๋ ํ๋กํ ์ฝ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐๐ป ์ถ๊ฐ๋ก ์ด์ด์ ธ์ @Published์ @ObservedObject๋ ๋ณด์์ฃ ! ์์ฆ ๊ฐ์ธ์ ์ผ๋ก ๋ง์ด ๋ฐ๋น ์ ธ์ ๋ธ๋ก๊ทธ๋ฅผ ์ํํ๊ฒ ๋ ๊ฒ ๊ฐ์.. ๋ง์ ์์ ๊ณต๋ถํ๊ณ ํฌ์คํ ํ๋๊ฒ๋ณด๋ค ์งง๊ฒ ํ์ตํ๊ณ ํฌ์คํ ํ๋ฉด์ ๊พธ์คํจ์ ์์ง ์๋ ์ ๋ต์ผ๋ก ๋น๋ถ๊ฐ ๊ฐ๋ คํฉ๋๋ค! (์๊ทธ๋ฌ๋ฉด ์ด๋ ์๊ฐ ๋๋ฒ๋ฆด๊ฒ ๊ฐ์....) ๊ทธ๋์ ์ด๋ฒ์ ์ค๋นํ ์ฃผ์ ๋ ์ด์ฌ๋ถํฐ ์ฐพ์! ๋๋์ผ๋ก ์ ๋ฒ์ Combine์ ๋ํ์ ๊ฐ๋ ๋ค์ ๊ณต๋ถํ๋ฉด์ ์ฐ๊ฒฐ๋์ด ObservableObject๋ผ๋ ์ฃผ์ ๋ฅผ ์ ์ ํ๊ฒ ๋์๋ค์ใ ใ ๊ทธ๋ผ ์ ์ํ๊ฒ ํ์ตํ๊ณ ์น๊ณ ๋น ์ ธ ๋ด ์๋ค๐ ObservableObject? ๊ณต์๋ฌธ์์ ์ ์๋ ๊ฐ์ฒด ๋ณ๊ฒฝ ์ ๋ฐฉ์ถํ๋ ๊ฒ์์๊ฐ ์..
-
UIFeedbackGeneratoriOS 2022. 3. 14. 10:44
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ UIFeedbackGenerator์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐๐ป ์ฐ์ , ์ ์ด๊ฑธ ํ์ตํ๊ฒ ๋์๋์ง ์๊ธฐ๋ฅผ ํด๋ณผ๊น ํฉ๋๋ค. ํ๋ก์ ํธ ์ํ์ค์ ์ด๋ค ์ ์ ์ ์ก์ ์ ์ํด์ (QR์ด๋ ๋ฐ์ฝ๋๋ฅผ ์ฐ๋๋ค๋๊ฐ ํ๋) ๋๋ฐ์ด์ค์ ์ง๋ ํน์ ์ฌ์ด๋๋ฅผ ๋ด์ฃผ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ์์์์? ๊ทธ๋ด๋ ์ด๋ ํ ์ก์ ์ ์ด๋ป๊ฒ ๊ตฌํํด์ฃผ๋๊ฒ ๋ฒ ์คํธ์ผ์ง ์ฐพ๋ค๊ฐ ์ UIFeedbackGenerator๋ฅผ ๋ฐ๊ฒฌํ๊ณ ํ์ตํ๊ฒ ๋์์ด์! ์ฌ์ฉ๋ฒ๋ ๋๊ฒ ๋จ์ํ๊ณ ๊ฐ๋ ๋ ๊ฐ๋จํด์ ๊ธ๋ฐฉ ์ ์ฉํ ์ ์์๊ณ ์ด์ ๋ํด ๋จ์ํ ์ ๋ UINotificationFeedbackGenerator๋ง ์ฌ์ฉํ์๋๋ฐ ์ด๊ฑฐ ๋ง๊ณ ๋ UIFeedbackGenerator์ ์์ ๋ฐ๋ ๋ค๋ฅธ ์น๊ตฌ๋ค๋ ์๊ธธ๋..! ์ด์ฐธ์ ํ๋ฒ ๊ฐ๋ตํ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ..