์ ์ฒด ๊ธ
-
What's new in SwiftUI (feat. WWDC 2024)SwiftUI 2024. 7. 8. 18:12
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ๋ถํฐ๋ ์กฐ๊ธ์ฉ ๋ฏธ๋ค์๋ WWDC 2024 ์ธ์ ๋ค์ ๋ค์ ์ดํด๋ณด๋ฉด์ ๊ด์ฌ์๋ ์ฃผ์ ๋ค์ ๋ํด ๋ฆฌ์บก์ ํด๋ณผ๊น ํฉ๋๋ค ๐๊ทธ ์ค์์ ์ฒซ๋ฒ์งธ๋ก ๋ฆฌ์บกํด๋ณผ๊ฒ์ SwiftUI์ ๋๋ค ๐๐ป์ด๋ฒ WWDC 2024์์ SwiftUI์ ์๋ก์ด๊ฒ๋ค์ ์ด๋ค๊ฒ๋ค์ด ๋์๋์ง ํ๋ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค! ๋ฌผ๋ก , ์ฌ๊ธฐ์๋ ๋ฅํ๊ฒ ๋ค์ด๊ฐ๋ ๋๋์ด ์๋ ์ ๋ฐ์ ์ผ๋ก ์ด๋ค๊ฒ๋ค์ด ์๊ฒจ๋ฌ๋์ง ํบ์๋ณด๋๊ฒ์ด๊ณ ๊ทธ์ ๋ํด ๋ ๋ฅํ ์ฃผ์ ๋ค์ ๋ณ๋ ์ธ์ ์ผ๋ก ๋ ๋ง๋ จ๋์ด ์์ต๋๋ค. ์ฆ, ์ ๋ ํ๋ฒ ๊ฐ๋จํ ํบ์๋ณธ ํ ์ดํ ํฌ์คํ ๋ค์์ ํ๋์ฉ ์๊ฒจ๋๊ฒ๋ค์ ๋ํด ๋ฅํ ์ธ์ ์ ์ ๋ฆฌํด๋ณผ๊นํด์ โบ๏ธ ๊ทธ๋ผ ํจ์ถ๋๊ฒ์ผ๋ก ์์๋ณด์์ฃ ๐ What's new in SwiftUIFresh apps์ด์ SwiftUI๋ฅผ ํตํด ์๋ก์ด ํญ ๋ทฐ ๊ทธ๋ฆฌ๊ณ ..
-
What's new in Tuist v4Tuist 2024. 7. 4. 18:45
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์ Tuist v4๋ก ์ค๋ฉด์ ๊ธฐ์กด v3์์ ์ด๋ค๊ฒ๋ค์ด ๋ณ๊ฒฝ๋์๋์ง ํ๋ฒ ๊ณต์๋ฌธ์๋ฅผ ํตํด ์ดํด๋ณด๋ ค ํฉ๋๋ค ๐๐ป Tuist v4๋ก ๋์ด์ค๋ฉด์ ๋ช๊ฐ์ง ๋ณ๊ฒฝ์ฌํญ๋ค์ด ์๊ฒจ๋ฌ๊ณ ์ด๋ฅผ ํตํด ํ๋ก์ ํธ๋ฅผ ๋ ํธํ๊ฒ ๊ด๋ฆฌํ๊ณ ์ ์งํ๊ธฐ ์ฌ์์ก์ต๋๋ค. ์ด๋ค๊ฒ๋ค์ด ๋ณ๊ฒฝ๋์๋์ง ์ฃผ์ ์ฌํญ๋ค์ ์ดํด๋ณด์์ฃ ! tuistenv๋ฅผ ํตํ ๋ฒ์ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ ์ญ์ Tuist v3๊น์ง๋ ์ค์น ์คํฌ๋ฆฝํธ๊ฐ tuistenv๋ผ๋ ํด์ ์ค์นํ์ต๋๋ค.tuistenv๋ ํน์ ๋ฒ์ ์ Tuist๋ฅผ ์ค์นํ๊ณ ํ์ฑํํ์ฌ ํ๊ฒฝ ๊ฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํด์ฃผ๋ ์ญํ ์ ํ์ต๋๋ค.์ฆ, ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํด์ค๊ฒ์ด์ฃ .๊ทธ๋ฐ๋ฐ ์ด์ ๋ Tuist์ ๊ธฐ๋ฅ ๋ฒ์๋ฅผ ์ค์ด๊ธฐ ์ํด์ tuistenv๋ฅผ ์ ๊ฑฐํ๊ณ , ๋์ผ ์ญํ ์ ํ์ง๋ง ๋ ์ ์ฐํ๊ณ ๋ค์ํ ๋๊ตฌ์ ์ฌ์ฉ..
-
Tuist v4 ์ค์น ๋ฐ ์ฌ์ฉ (with. ์๋ํ)Tuist 2024. 7. 1. 18:52
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Tuist v4์ ๊ธฐ์ค์ผ๋ก ์ค์นํ๊ณ ๊ฐ๋จํ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป Tuist v4ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ ๋ชจ๋ํ์ ๋์์ ์ฃผ๋ ์ฐ๋ฆฌ ์ต์ํ Tuist๊ฐ 3 ๋ฒ์ ๋์์ 4 ๋ฒ์ ๋๋ก ์ค๋ฉด์ ๋ณํ๊ฐ ์๊ฒผ์ฃ .๋ก๊ณ ๊ฐ ๋ฐ๋์์๋ฟ๋ง ์๋๋ผ, ๊ธฐ์กด curl์ด๋ homebrew๋ฑ์ ์ด์ฉํด ์ค์นํ์๋ Tuist๊ฐ ์ด์ ๋ mise๋ฅผ ์ด์ฉํด ์ค์นํ๋ผ๊ณ ๊ถ์ฅํ๊ณ ์๊ฒจ๋ฌ์ต๋๋ค๐ ๋ฌผ๋ก , ์์ง๊น์ง๋ homebrew ๋ฐ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ค์นํ ์ ์์ง๋ง mise๋ฅผ ํ์ฉํ๋ผ๊ณ ๊ถ์ฅํ๋ค์.mise๋ ๋ง์ด์ค? ๋ง์ด์ฆ๋ก ์ฝ๋์ค ์์๋๋ฐ ๋ฏธ์ฆ๋ผ๊ณ ์ฝ๋๋ผ๊ตฌ์ ใ ใ ๋ฟ๋ง ์๋๋ผ, ํ๋ก์ ํธ ์์ฑ์ ์ํ ์์กด์ฑ๋ค์ ๊ด๋ฆฌํ๋๊ฒ๋ค๊ณผ ํ๊ฒ ๋ฐ ํ๋ก์ ํธ ์์ฑ์ ์ํด ์์ฑํ๋ ์ฝ๋๋ค์ ์ผ๋ถ๋ถ๋..
-
TCA - Dependency ์ค๊ณTCA 2024. 6. 29. 15:53
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ TCA์์ Dependencies ์ค๊ณ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ปDesigning dependencies์ข ์์ฑ์ ๊ธฐ๋ฅ์ ์ฃผ์ ํ๊ณ ํ ์คํธ๋ฅผ ์ํด์ ์ฌ์ ์ํ๋๋ฐ ๋์์ด ๋๋ ์ค๊ณ๊ฐ ํ์ํฉ๋๋ค.์ฆ, ํต์ฌ์ ์ผ๋ก ๊ฐ์ ธ๊ฐ์ผํ ๊ฒ์ ์ข ์์ฑ์ ์ ์ดํ ์ ์๊ฒ ๋ง๋ค๊ธฐ ์ํด์ ๊ฒฉ๋ฆฌ ๋ฐ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋๊ฒ์ด์ฃ ! ํ๋จ๊ณ์ฉ ์์๋ณผ๊น์? Protocol-based dependenciesSwift์์ ์ข ์์ฑ์ ์ค๊ณํ๋ ๋ฐฉ๋ฒ ์ค ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋๊ฒ์ด ํ๋กํ ์ฝ์ ์ด์ฉํ๋๊ฒ์ ๋๋ค.์์๋ก, ์๋์ ๊ฐ์ด ์ค๋์ค ํ๋ ์ด์ ๋ํ ํ๋กํ ์ฝ์ ์ค๊ณํด๋ณธ๋ค๊ณ ๊ฐ์ ํด๋ด ์๋ค. protocol AudioPlayer { func loop(url: URL) async throws func play(u..
-
SwiftUI - symbolEffectSwiftUI 2024. 6. 25. 06:11
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์ symbolEffect์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป symbolEffectsymbolEffect๋ SF Symbol ์ฆ, System Font Symbol์ ์คํ์ผ์ ๋ณ๊ฒฝํ๊ณ ์ํ ๋ ์ฌ์ฉํ๋ ๋ทฐ ๋ชจ๋ํ์ด์ด ์ ๋๋ค.์ฌ๊ธฐ์ SF Symbol์ ๊ธฐ๋ณธ์ ์ผ๋ก iOS์์ ์ ๊ณต๋๋ ์์คํ ์์ด์ฝ์ด๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค ๐ ํด๋น ๋ทฐ ๋ชจ๋ํ์ด์ด๋ iOS 17.0 ์ด์์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ ์๋ ์๋์ ๊ฐ์ต๋๋ค. nonisolatedfunc symbolEffect( _ effect: T, options: SymbolEffectOptions = .default, value: U) -> some View where T : DiscreteSymbo..
-
SwiftUI - ContentUnavailableViewSwiftUI 2024. 6. 21. 07:30
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์ ContentUnavailableView์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป ContentUnavailableView?ํด๋น ๋ทฐ ๊ตฌ์กฐ์ฒด๋ ์ฌ์ฉ์๊ฐ ์ฑ ์ฝํ ์ธ ๋ฅผ ์ฌ์ฉํ ์ ์์๋ ํ์๋๋ ๋ ์ด๋ธ๊ณผ ์ถ๊ฐ ์ฝํ ์ธ ๋ก ๊ตฌ์ฑ๋ ์ธํฐํ์ด์ค์ ๋๋ค.์ฆ, ๋ฐ์ดํฐ๊ฐ ์์๋ ์๋ค๊ณ ๋ณด์ฌ์ฃผ๋ ๋ทฐ์ธ๋ฐ ์ด๊ฑธ ์ง์ SwiftUI์์ ์ฐ๊ธฐ ์ฝ๊ฒ ์ ๊ณตํด์ฃผ๋ ์ญํ ์ ํ์ฃ .๋ค๋ง, ์ด๋์ ๋ ํ ๊ท๊ฒฉ์ด ์์ด์ ์์ ํ ๋ค๋ฅธ ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ค๋ฉด ์ง์ ๋ง๋ค์ด์ผ ํฉ๋๋ค ๐ฅฒ ๊ทธ๋๋ ํ๋ฒ ์์๋ณด์์ฃ ! ํด๋น ์ธํฐํ์ด์ค๋ iOS 17์์ ๋์์ 17 ์ด์๋ถํฐ ์ฌ์ฉํ ์ ์๊ณ , ์ ์๋ ์ด๋ ์ต๋๋ค. @MainActor @preconcurrencystruct ContentUnavailableView where ..
-
View Snapshot CaptureiOS 2024. 6. 18. 07:20
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ๋ทฐ ์ค๋ ์ท์ ์บก์ณํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํ๋ฒ ๊ตฌํํด๋ณผ๊น ํฉ๋๋ค ๐๐ป ์ฐ์ ํฌ๊ฒ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํด์.ํ๋๋, ํ์ฌ ๋ํ๋ ์ ์ฒด ํ๋ฉด์ ์ค๋ ์ท์ ๋ฐ์ ์บก์ณํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ ํ๋๋, ์ํ๋ ๋ทฐ ์์ญ๋ง ์บก์ณํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ผ ํ๋ฒ ๋ฐ๋ก ์์๋ณผ๊น์? ์ ์ฒด ํ๋ฉด ์บก์ณํ๊ธฐ์ฐ์ ์ฝ๋๋ถํฐ ๋ณผ๊น์? func takeSnapshot() async throws -> UIImage { return try await MainActor.run { var totalImage: UIImage? guard let keyWindow = UIApplication.shared.connectedScenes .compactMap({ $0 as? UIWindowScene..
-
PhotosPicker ์ฌ์ฉํ๊ธฐSwiftUI 2024. 6. 13. 19:43
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์ PhotosPicker๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ง์ ๊ฐ์ ธ์ค๋๊ฒ์ ํ์ตํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป iOS 16.0 ์ด์ ๊ธฐ์กด์๋ SwiftUI์์ PhotosPicker ๊ฐ์ ํธ๋ฆฌํ ๋ทฐ ์ปดํฌ๋ํธ๊ฐ ์กด์ฌํ์ง ์์๊ธฐ์ PHPhotoLibrary๋ฅผ ์ด์ฉํด ์ฌ์ฉํ๊ณค ํ์ต๋๋ค.๊ทธ๋ฐ๋ฐ ์ด์ PhotosPicker์ ํตํด ์ฝ๊ฒ SwiftUI์ค๋ฝ๊ฒ ๋ง๋ค์ด๋ณผ ์ ๊ฐ ์๊ฒ ๋์์ด์. ๊ทธ๋ผ ๋ฐ๋ก ์์๋ณผ๊น์? PhotosPickerํด๋น ์ปดํฌ๋ํธ๋ ์ฌ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฆ, ๋๋ฐ์ด์ค์ ์จ๋ฒ์์ ์์ ์ ์ ํํ๊ธฐ ์ํด Photo Picker๋ฅผ ๋์ฐ๋ ๋ทฐ ์ปดํฌ๋ํธ์ ๋๋ค.์ฝ๊ฒ ๋งํด, ์จ๋ฒ์ ๋์ฐ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง ๋ทฐ๋ผ๊ณ ๋ณด์๋ฉด ๋ ๊ฒ ๊ฐ์์ ๐๐ป ์์ฝ์ง๋ง, ์์์๋ ํ๋ฒ ๋งํ๋ฏ ํด..