swiftUI
-
SwiftUI - Color ํผํฉํ๊ธฐSwiftUI 2024. 10. 28. 18:45
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ๊ฐ๋จํ SwiftUI์ ์๋ก์ด ๊ธฐ๋ฅ์ ์์๋ณด๋ ค ํฉ๋๋ค ๐๐ป๋ฐ๋ก SwiftUI์์ ์์์ ์ ์ฉ์ํค๋ Color๋ฅผ ์ฌ์ฉํ ๋ ์๋ก ๋์จ mix ๋ฉ์๋๋ฅผ ์ด์ฉํด ์ปฌ๋ฌ๋ฅผ ํผํฉํ์ฌ ์๋ก์ด ์ปฌ๋ฌ๋ฅผ ๋์ถํด๋ด๋ณด๋๊ฒ์ด์ฃ ! ์ ๋ง ๊ฐ๋จํ ๋ฐ๋ก ์์๋ณผ๊น์? Color mix์ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก Color ํ์ ์ ๊ฐ๋จํ ์ง๊ณ ๋์ด๊ฐ๋ณผ๊ป์. Color๋ SwiftUI์์ ์์์ ํํํ๋ ๊ตฌ์กฐ์ฒด์ ๋๋ค. @frozenstruct Color ํํํ๋ ๋ฐฉ์์ผ๋ก๋ ์์ ์นดํ๋ก๊ทธ์์ ์์์ ๋ก๋ํ๊ฑฐ๋, RGB ๊ฐ์ ๋ฃ๊ฑฐ๋ ์์กฐ, ์ฑ๋, ๋ฐ๊ธฐ ๋ฑ์ ์ง์ ํ์ฌ ํธํ๊ฒ ํํํ ์ ์์ด์. let aqua = Color("aqua")let skyBlue = Color(red: 0.4627, green: 0...
-
SwiftUI - ContainerValueKeySwiftUI 2024. 10. 24. 18:52
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์ ContainerValueKey์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป ContainerValueKeyiOS 18์์ ๋์จ ๊ฐ๋ ์ผ๋ก ์ปจํ ์ด๋ ๊ฐ์ ์ ๊ทผํ๊ธฐ ์ํ ํค์ ๋๋ค. protocol ContainerValueKey ์ต์ํ PreferenceKey์ฒ๋ผ ํ๋กํ ์ฝ์ด๋ฉฐ ๋น์ทํ์ง๋ง, ์กฐ๊ธ ๋ค๋ฅธ ์ฐจ์ด๊ฐ ์์ด์. ์กฐ๊ธ ๋ ์ฐจ์ด๋ฅผ ์ง์ด๋ณผ๊น์? PreferenceKey๋ ํน์ ๋ทฐ์์ ๊ณ์ฐ๋ ๊ฐ์ ๋ทฐ์ ์ ๋ฌํ๋ ์ญํ ๋ก ๋ง์ด ์ฐ์ด์ฃ .์ฆ ๋ฐ์ดํฐ๋ ์์ ๋ทฐ์์ ์์ ๋ทฐ๋ก ์ ํ๋ฉ๋๋ค.๋ ์ด์์์ ์ ๋ณด๋ฅผ ์ ํํ๊ฑฐ๋ ์ฌ๋ฌ ํ์ ๋ทฐ์์ ๋ฐ์ดํฐ๋ค์ ๋ชจ์์ ์์ ๋ทฐ์์ ์ฒ๋ฆฌํ ๋ ๋ง์ด ์ฌ์ฉํ์ฃ . struct SizePreferenceKey: PreferenceKey { static..
-
SwiftUI - NavigationTransitionSwiftUI 2024. 10. 21. 18:45
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ iOS 18์์ ์๋ก ๋์จ SwiftUI์ NavigationTransition์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป NavigationTransition์ฐ์ ์ ํ ํจ๊ณผ์ ๋ํ ์๊ธฐ์ธ๊ฒ ๊ฐ์ฃ ?์ฐ๋ฆฌ๊ฐ ๋ค๋น๊ฒ์ด์ ๊ตฌ์กฐ๋ก ์คํ์ ์์ ํ๋ฉด์ ์ ํํ๊ฑฐ๋ ์ํธ ํํ๋ก ์ ํํ ๋ ๋ณดํต ์ผ๋ฐ์ ์ผ๋ก ์๊ฐํ๊ณ ์๋ ์ ํ ํจ๊ณผ๊ฐ ์์ฃ ? ์์ฃผ ์ต์ํ ์ ํ ํจ๊ณผ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ, iOS 18๋ถํฐ๋ ์ด๋ฐ ๊ธฐ๋ณธ ์ ํ ํจ๊ณผ ์ธ์๋ ์ค ์ ํ ํจ๊ณผ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ด์.๊ทธ๋์ NavigationTransition์ด๋ผ๋๊ฒ๋ ๋์ค๋ฉด์ ๊ทธ์ ๋ง๋ ๋ทฐ ๋ชจ๋ํ์ด์ด๋ ์๊ฒจ๋ฌ์ต๋๋ค. ๊ทธ๋ผ ๋จผ์ NavigationTransition๋ถํฐ ์์๋ด์ผ๊ฒ ์ฃ ? protocol NavigationTransition Na..
-
์ปจํ ์ธ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์๋ ScrollView ์ ํํ๊ธฐ (feat. SwiftUI)SwiftUI 2024. 10. 17. 18:59
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์์ ๊ฐ๋จํ ์ปจํ ์ธ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์๋ ScrollView๋ก ์ ํํ๋ ์ฝ๋ ๊ตฌํ์ ์๊ฐํด๋ณผ๊น ํฉ๋๋ค ๐๐ป ์๋ ScrollView ์ ํํ๊ธฐ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ปจํ ์ธ ๋ฅผ ์ฑ์์ ๊ตฌํํ ๋ ์ฝ๋ ์ ์คํฌ๋กค๋ทฐ๋ก ๊ฐ์ธ์ง ์์ผ๋ฉด ์คํฌ๋กค๋์ง๊ฐ ์์ฃ .๋ฌผ๋ก List์ ๊ฐ์ ๊ทธ๋ฐ ์ปดํฌ๋ํธ ์ฌ์ฉ์ ์ ์ธํ๊ณ ์..! ๊ทธ๋ฐ๋ฐ, ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ์ ์ฅ์์ ์ด ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ ค์ค๋ ๋๋ฐ์ด์ค์ ์ด๋์ ๋ ์ฌ์ด์ฆ๋ฅผ ์ฐจ์งํ ์ง ๋ฏธ๋ฆฌ ์ ์ ์์ฃ .๊ทธ๋ ๊ธฐ์, ์คํฌ๋กค์ด ๋๊ฒ ์คํฌ๋กค๋ทฐ๋ก ๋ฏธ๋ฆฌ ๊ฐ์ธ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ง์ฝ ์๊ตฌํ๋ UI / UX๊ฐ ์ปจํ ์ธ ๊ฐ ์ ์ด์ ๋๋ฐ์ด์ค์ ์คํฌ๋กค์ ํ์ง ์์๋ ๋ค ํ์๊ฐ ๋๋ค๋ฉด ์คํฌ๋กค์ด ๋์ง ์๋๋กํ๊ณ , ์ปจํ ์ธ ๊ฐ ๋ง์์ ๋๋ฐ์ด์ค์ ์ฌ์ด์ฆ๋ฅผ ๋์ด๊ฐ๋ฉด ์คํฌ๋กค์ด ์ ์ฉ..
-
SwiftUI - ScrollPositionSwiftUI 2024. 10. 14. 18:56
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์ ScrollPosition์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป ScrollPosition์ด๋ฒ iOS 18๋ก ์ ๋ฐ์ดํธ ๋๋ฉด์ SwiftUI์์ ScrollPosition ํ์ ์ด ์๊ธฐ๋ฉด์ ์ด์ ๊ด๋ จ๋ ๋ชจ๋ํ์ด์ด๋ค๋ก ์คํฌ๋กค ๋ทฐ์ ๊ธฐ๋ฅ์ด ๋ ํธ๋ฆฌํด์ก์ต๋๋ค ๐ ๊ธฐ์กด์, SwiftUI์์ ScrollView๋ฅผ ์ฌ์ฉํ ๋, ํน์ ์์น๋ก ์คํฌ๋กค์ ์ด๋์ํค๊ฑฐ๋ ํ ๋ ์ฐ๋ฆฌ๋ ScrollViewReader๋ฅผ ํ์ฉํด์ scrollTo ๋ฉ์๋๋ก ๋์ ์์ผ์คฌ์ต๋๋ค. ์ด์ ๊ด๋ จํด์๋ ์๋ ํฌ์คํ ์ ์ฐธ๊ณ ํด๋ณด๋ฉด ์ด๋ฒ ํฌ์คํ ์์ ๋ค๋ค๋ณผ ScrollPosition๊ณผ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ํ์ธํด๋ณผ ์ ์์ด์! SwiftUI - ScrollViewReader์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ..
-
SwiftUI - ScaledMetricSwiftUI 2024. 9. 9. 19:10
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ์ด๋ฏธ์ง ์์ ์ ํฌ๊ธฐ์ ๋ํด ScaledMetric API๋ฅผ ์ ์ฉํด ๋ค์ด๋๋ฏน ํ์ ์ ๋์ฒํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป ์ฌํด WWDC 2024์์ Get started with Dynamic Type์ด๋ผ๋ ์ธ์ ์ด ๊ณต๊ฐ๋์์ต๋๋ค.ํด๋น ์ธ์ ์์ ๋ค์ด๋๋ฏน ํ์ ์ ๋ํด ์ ๋ฐ์ ์ผ๋ก ์๊ฐํ๋ฉฐ ๋ค๋ฃจ๊ณ ์๋๋ฐ์.์ฌ๊ธฐ์ ScaledMetric์ด๋ผ๋ ํ๋กํผํฐ ๋ํผ๋ก ์ฐ๋ฆฌ์ ์ด๋ฏธ์ง ์์ ํฌ๊ธฐ๋ฅผ ๋ค์ด๋๋ฏน ํ์ ์ ์ ์ฉํ ์ ์๋ค๊ณ ์๊ฐํ๊ณ ์์ด์ ๐ ๊ทธ๋์ ๊ทธ ScaledMetric API๊ฐ ์ด๋ค๊ฑด์ง ํต์ฌ๋ง ์ ๋ฆฌํด๋ด ๋๋ค! Get started with Dynamic Type ์ธ์ ์ ์ ๋ฆฌํ ํฌ์คํ ๋ ์์ผ๋ ๋ง์ ๊ด์ฌ ๋ถํ๋๋ฆฝ๋๋ค ๐๐ป Get started with Dyn..
-
Custom Font Dynamic TypeiOS 2024. 9. 2. 19:00
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ์ปค์คํ ํ ํฐํธ์ ๋ํด ๋ค์ด๋๋ฏน ํ์ ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป Dynamic Type๊ณผ Font์ฐ์ , ๋ค์ด๋๋ฏน ํ์ ์ ์ฌ์ฉ์๋ง๋ค ํ์ํ ํ ์คํธ ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๊ธฐ์ ๋์ ์ผ๋ก UI๋ฅผ ๋ค๋ฃจ๋ฉฐ ๊ฐ๋ ์ฑ์ ๋์ฌ์ค๋ ์ฃผ๋ก ์ฌ์ฉํ์ฃ .์ด์ ํฌ์คํ ์์ ๋ค์ด๋๋ฏน ํ์ ์ด ๋ฌด์์ด๊ณ ํ์ฉ์ ์ด๋ป๊ฒ ํ๋์ง ์๊ฐํ ๋ฐ ์์ต๋๋ค. ํน์ ๋ค์ด๋๋ฏน ํ์ ์ ๋ํด ๋จผ์ ์๊ณ ์ถ๋ค๋ฉด ์ ํ์ผ๋ก ๋ณด๊ณ ์๋ ์ข์๊ฒ ๊ฐ์์ ๐ Get started with Dynamic Type (feat. WWDC 2024)์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ๋ค์ด๋๋ฏน ํ์ ์ ๋ํด WWDC 2024์์ ๋์จ ์ธ์ ์ ํ์ตํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป Dynamic Type์ ์ฌ์ฉ์๊ฐ ์์คํ ์ ๋ฐ๊ณผ ๋ชจ๋ ์ฑ์์..
-
SwiftUI - AnyLayoutSwiftUI 2024. 8. 29. 18:28
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์ AnyLayout์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป AnyLayout์ฐ์ AnyLayout์ ๋ ์ด์์ ํ๋กํ ์ฝ์ ํ์ ์๊ฑฐ๋ ์ธ์คํด์ค์ ๋๋ค.์ฌ๊ธฐ์ Type erasure๋, ์ปดํ์ผ ์๊ฐ์ ์๋ ค์ง ํ์ ์ ๋ณด์ ์ผ๋ถ๋ฅผ ๋ฐํ์์ ์ ๊ฑฐํ๋ ๊ณผ์ ์ ๋งํ๋ฉฐ ์ฃผ๋ก ์ ๋ค๋ฆญ ํ๋ก๊ทธ๋๋ฐ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.์ฆ, ๊ตฌ์ฒด ํ์ ์ ์จ๊ธฐ๊ณ ๋ ์ผ๋ฐ์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ ์ ์์ฃ .AnyLayout๋ Any๋ผ๋๊ฒ์ด ๋ถ์์ผ๋ ๊ตฌ์ฒด์ ์ธ ํ์ ์ ์จ๊ธฐ๊ณ Layout์ด๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํจ์ ์ถ๋ก ํด๋ณผ ์ ์์ต๋๋ค. SwiftUI์์ AnyView๋ ๋์ผํ๊ฑฐ๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค ๐ @frozenstruct AnyLayout ์ ์ธ ๊ตฌ์กฐ ์์ฒด๋ ๊ตฌ์กฐ์ฒด๋ก ๊ฐ๋จํฉ๋๋ค. AnyLayout..