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

์ „์ฒด ๊ธ€178

[iOS/Swift] ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด ์ƒ์„ฑ Singleton ํด๋ž˜์Šค ์ •์˜ class Singleton { static var sharedObject: Singleton = Singleton() } ์‚ฌ์šฉ๋ฐฉ๋ฒ• Singleton.shared.getUUID() getUUID๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ–ˆ์„ ๊ฒฝ์šฐ ์œ„์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•จ 2023. 2. 4.
[iOS/Swift] UIPresentationController custom modal transition style์˜ ๊ฒฝ์šฐ animator ๊ฐ์ฒด ์™ธ์— ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ view controller๊ฐ€ presenting ๋˜๊ธฐ ์ „์— UIPresentationController์˜ ์‹œ์Šคํ…œ์ด presentation controller์„ ์ƒ์„ฑํ•˜๋ฉฐ view controller๊ฐ€ dismiss ๋˜๊ธฐ ์ „๊นŒ์ง€ ์ฐธใ…ˆ๋„๋ฅผ ์œ ์ง€ํ•˜๊ฒŒ ๋จ presentation controller๋Š” animator object์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ๋„˜์–ด์„œ๋„ ์กด์žฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— presentation controller๋ฅผ ์‚ฌ์šฉํ•จ ๋งŒ์•ฝ ์ปค์Šคํ…€ ํŠธ๋žœ์ง€์…˜ ์ค‘์— ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๋Š” view controller์˜ ๋’ท ๋ถ€๋ถ„์— ๊ทธ๋ฆผ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜์•ผ ํ•œ๋‹ค๋ฉด presentation controlelr๋Š” shadow๋ทฐ๋ฅผ ์ƒ์„ฑํ•˜.. 2023. 1. 29.
[iOS/Swift] UIViewControllerTransitioningDelegate view controller ์‚ฌ์ด์—์„œ interactive transition ์œ„ํ•œ ๋ฉ”์†Œ๋“œ์˜ ๋ชจ์Œ modalPresentationStyle ์†์„ฑ์„ .custom์œผ๋กœ ์ง€์ •ํ•˜๊ณ  transitioningDelegate ํ”„๋กœํผํ‹ฐ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•จ presnet, dismiss์— ์‚ฌ์šฉ๋  animator ๊ฐ์ฒด๋ฅผ ๊ฐ๊ฐ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ(push, pop ๋„ ๋™์ผํ•˜๊ฒŒ ๊ฐ๊ฐ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ) transition์— ์‚ฌ์šฉ๋˜๋Š” animator ๊ฐ์ฒด๋Š” UIViewControllerAnimatedTransitioning protocol์„ ๋”ฐ๋ผ์•ผ ํ•จ ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ํƒ€์ด๋ฐ์„ ์ปจํŠธ๋กค ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž์˜ ํ„ฐ์น˜ ์ด๋ฒคํŠธ ๊ฐ’์„ ๋ฐ›๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ์ธํ„ฐ๋ ‰์…˜์„ ์ด์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ UIViewControllerInteractiveTransitionin.. 2023. 1. 29.
[iOS/Swift] UIViewControllerAnimatedTransitioning ์ •๋ฆฌ custom view controller transition ์„ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ ํ™”๋ฉด ์ „ํ™˜์„ ์œ„ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“œ๋Š” animator ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ ์ธํ„ฐ๋ ‰ํ‹ฐ๋ธŒ ํŠธ๋žœ์ง€์…˜์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” animator ๊ฐ์ฒด๋ฅผ ํƒ€์ด๋ฐ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ๊ฒฐํ•ฉํ•ด์•ผ ํ•จ ์ด ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ transitionDuration(using:), animateTransition(using:) ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•จ UIViewControllerTransitioningDelegate ํ”„๋กœํ† ์ฝœ์„ ๋”ฐ๋ฅด๋Š” ๊ฐ์ฒด์—์„œ animator ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•จ ๋ทฐ ์ปจํ‹€๋กค๋Ÿฌ ํ™”๋ฉด ์ „ํ™˜ ์‹œ presnet ํ•  ๊ฒฝ์šฐ UIModalPresentationStyle.custom์œผ๋กœ ์ง€์ •ํ•ด ์คŒ animator๊ฐ์ฒด๋Š” UIViewCont.. 2023. 1. 29.
[Pod/iOS] Pod ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ํ„ฐ๋ฏธ๋„์—์„œ pod lib create [pod name] https://guides.cocoapods.org/making/using-pod-lib-create ์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ”Œ๋žซํผ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜์˜ด ์ง€๊ธˆ์€ ๋กœ์ปฌ์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „์— ์ž‘์—…ํ•œ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์ง€ ์•Š์€ํ•œ, ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค What platform do you want to use?? [ iOS / macOS ] > iOS ์ด๋•Œ iOS ์„ ํƒ (๋งฅ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋ฉด macOS๋ฅผ ์„ ํƒํ•˜๋ฉด ๋จ) What language do you want to use?? [ Swift / ObjC ] > Swift ํŒŸ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•  ์–ธ์–ด ์„ ํƒ Would you like to include a demo .. 2023. 1. 29.
[iOS Swift] Deeplink ์‚ฌ์šฉํ•˜๊ธฐ 1. URL scheme ์ง€์ •ํ•˜๊ธฐ 2. ๋”ฅ๋งํฌ ์ง€์ •ํ•˜๊ธฐ 1. URL scheme ์ง€์ •ํ•˜๊ธฐ URL Scheme์€ url์ด ์‹œ์ž‘๋˜๊ธฐ ์ „ url ์•ž์— ๋ถ™๋Š” ํ”„๋ฆฌํ”ฝ์Šค ์ŠคํŠธ๋ง (์˜ˆ๋ฅผ ๋“ค์–ด https:// ๊ฐ€ ์žˆ์Œ) ์•ฑ์ด ์„ค์น˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ url์ด์ง€๋งŒ ์‚ฌํŒŒ๋ฆฌ์—์„œ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‚ด ์•ฑ์— ์ง€์ •๋œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•จ (1) ์•ฑ์—์„œ URL Scheme ๋“ฑ๋กํ•˜๊ธฐ Info.plist ํŒŒ์ผ์— URL scheme ๋“ฑ๋ก Info.plist > URL Types ์„น์…˜ Identifier์™€ ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํ‚ด์„ ์ž…๋ ฅํ•ด ์คŒ Identifier๋Š” ๋ฒˆ๋“ค id์™€ ๋™์ผ (2) Schene delegate ๋ฉ”์†Œ๋“œ ์ •์˜ํ•˜๊ธฐ ์•ฑ์— ๋”ฅ๋งํฌ ์ฒ˜๋ฆฌ ์š”์ฒญํ•˜๊ธฐ ์ฝ”๋“œ๋ ˆ๋ฒจ์—์„œ ํ•ด๋‹น ์ฝ”๋“œ ๋™์ž‘ ์‹œํ‚ค๋ฉด ๋จ ํ˜น์€ ์‚ฌํŒŒ๋ฆฌ์˜ ์ฃผ์†Œ์ฐฝ์—์„œ ์ง€์ •.. 2022. 12. 29.
[SwiftUI] Sticky Header ์Šคํฌ๋กค์‹œ ๊ณ ์ • ์‹œํ‚ค๊ธฐ ๋ณดํ˜ธ๋˜์–ด ์žˆ๋Š” ๊ธ€ ์ž…๋‹ˆ๋‹ค. 2022. 12. 17.
[SwiftUI] Model, ViewModel ์ƒ์„ฑ Model ์ƒ์„ฑ - ๋ชจ๋ธ์€ Identifiable ํ”„๋กœํ† ์ฝœ์„ ๋”ฐ๋ฅด๊ฒŒ ํ•จ - Identifiable์„ ๋”ฐ๋ฅด๋Š” ๋ชจ๋ธ์€ id๋ฅผ ์ž‘์„ฑํ•ด ์ฃผ์–ด์•ผ ํ•˜๋ฉฐ ์ด ๊ฐ’์€ ๊ณ ์œ  ๊ฐ’์ด ๋˜์–ด์•ผ ํ•จ struct Task: Identifiable { var id = UUID().uuidString var title: String } ViewModel ์ƒ์„ฑ - viewModel์€ ObservableObject๋ฅผ ์ฑ„ํƒํ•ด์คŒ - Model์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ SwiftUI์— ํ‘œ์‹œํ•˜๋ ค๋ฉด ObservableObject ํ”„๋กœํ† ์ฝœ์„ ๋ชจ๋ธ ํด๋ž˜์Šค์— ์ฑ„ํƒํ•จ class TaskViewModel: ObservableObject { @Published var storedTasks: [Task] = [] } 2022. 12. 17.
[SwiftUI] Service Layer to ViewModel with Combine ์ฐธ๊ณ  ๋ฐ ์ถœ์ฒ˜ ์‚ฌ์ดํŠธ https://www.youtube.com/watch?v=TlJUMVKtUhc&list=PLwvDm4Vfkdphbc3bgy_LpLRQ9DDfFGcFu&index=7 Service layer์˜ ์—ญํ™œ - ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ชจ๋“  ๋กœ์ง์„ ํฌํ•จํ•œ ๋„คํŠธ์›Œํฌ ๋ ˆ์ด์–ด - ๋ฐ์ดํ„ฐ๋ฅผ ๋””์ฝ”๋”ฉ ํ•˜๊ณ  ๋ทฐ ๋ชจ๋ธ๋กœ ์ „๋‹ฌํ•˜๋Š” ์—ญํ™œ์„ ํ•จ Services ์ƒ์„ฑ - New file > Swift ํŒŒ์ผ ์„ ํƒ ํ›„ PrefixDataService.swift ํŒŒ์ผ ์ƒ์„ฑ Published ๋ณ€์ˆ˜ ์„ ์–ธ @Published var allCoins: [CoinModel] = [] - @Published ํ”„๋กœํผํ‹ฐ ๋žฉํผ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํผ๋ธ”๋ฆฌ์…”๋ฅผ ์ƒ์„ฑํ•จ - subscriber๊ฐ€ ํผ๋ธ”๋ฆฌ์…”๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ ๊ตฌ๋…ํ•  ์ˆ˜ ์žˆ์Œ Cancellab.. 2022. 11. 21.
[SwiftUI] NavigationView์—์„œ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ” ์ˆจ๊ธฐ๊ธฐ ์ด์ „์— ์‚ฌ์šฉํ•˜๋˜ ์†์„ฑ์ธ navigationBarHidden์€ deprecate ๋  ์˜ˆ์ • @available(watchOS, introduced: 6.0, deprecated: 100000.0, message: "Use toolbar(.hidden)") public func navigationBarHidden(_ hidden: Bool) -> some View toolbar(.hidden)์„ ์‚ฌ์šฉ NavigationView { HomeView() .toolbar(.hidden) } HomeView์—์„œ ๋„ค๋น„๊ฒŒ์ด์…˜ ํˆด๋ฐ”๋ฅผ ์•ˆ๋ณด์ด๊ฒŒ ์ฒ˜๋ฆฌํ•จ 2022. 11. 17.
[SwiftUI] PreviewProvider ์บ”๋ฒ„์Šค์—์„œ ๋‹คํฌ ๋ชจ๋“œ ๊ฐ™์ด ๋ณด๊ธฐ struct ButtonView_Previews: PreviewProvider { static var previews: some View { Group { ButtonView(iconName: "info") .previewLayout(.sizeThatFits) ButtonView(iconName: "plus") .previewLayout(.sizeThatFits) .preferredColorScheme(.dark) } } } View๋ฅผ ์ƒ์„ฑํ•˜๋ฉด PreviewProvider๊ฐ€ ํ•จ๊ป˜ ์ž‘์„ฑ๋˜์–ด ์žˆ๊ณ  ์—ฌ๊ธฐ์— previews๋กœ ๋ฏธ๋ฆฌ๋ณด๊ธฐ View๋ฅผ ์ง€์ •ํ•จ ButtonView๋ฅผ ์ƒ์„ฑํ•œ ๊ฒฝ์šฐ struct ButtonView_Previews: PreviewProvider { static var previews: some.. 2022. 11. 17.
[RxSwift] RxDataSources๋กœ UITableView ์…€ ๋ฐ”์ธ๋”ฉ ํ•˜๊ธฐ ๋ณดํ˜ธ๋˜์–ด ์žˆ๋Š” ๊ธ€ ์ž…๋‹ˆ๋‹ค. 2022. 10. 10.