ios
-
SwiftUI์์ ์ธํฐ๋ํฐ๋ธ ํธ์ ๋ค๋น๊ฒ์ด์ ์ฌ์ฉํ๊ธฐSwiftUI 2024. 12. 12. 18:46
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์์ ์ฝ๊ฒ ์ธํฐ๋ํฐ๋ธ ํธ์ ๋ค๋น๊ฒ์ด์ ์ ์ฌ์ฉํ๋๊ฑธ ๊ตฌํํด๋ณด๋ ค๊ณ ํฉ๋๋ค ๐๐ป ๋จผ์ ์ธํฐ๋ํฐ๋ธ ํธ์ ๋ค๋น๊ฒ์ด์ ๋ ๋ค์ํ ์ฐ์์ด ์์๊ฑด๋ฐ, ํ์ฌ ์ ๊ฐ ํ๊ณ ์ ํ๋ ๊ฒฐ๊ณผ๋ฌผ๋ถํฐ ๊ณต์ ํด๋ณผ๊ป์! ๋๋ฅ - ๐ ์ด๋ฐ๊ฑธ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ์ฆ, ํญ๋ทฐ์ ๊ฐ์๊ฑธ ์ฌ์ฉํ์ง ์๊ณ ์ฃ์ง ์ค์์ดํ๋ฅผ ํตํด ์ด์ ๊ณผ ์ดํ ๋ทฐ๋ก ์ฌ๋ผ์ด๋ ํ์์ผ๋ก ์์ฐ์ค๋ฝ๊ฒ ์ ํ๋๋๋ก ์ธํฐ๋ํฐ๋ธ ํธ์ ๋ค๋น๊ฒ์ด์ ์ SwiftUI์ ์น์ด๋ณด๋ ค๊ณ ํฉ๋๋ค ๐๐ป ๊ทธ๋ผ ํ๋ฒ ์์ํด๋ณผ๊น์? ์ธํฐ๋ํฐ๋ธ ํธ์ ๋ค๋น๊ฒ์ด์ ๊ตฌํํ๊ธฐ๋จผ์ ์ ๊ฐ ํ๋ ๋ฐฉ์์ผ๋ก๋ SwiftUI์์๋ง ๋ชจ๋ ๊ฑธ ํด๊ฒฐํ ์ ์์ด์.๊ทธ๋ ๊ธฐ์ UIKit์ UINavigationController๋ฅผ ์ฑํํ ๋ณ๋์ InteractivePushNavi..
-
์นด์นด์คํก ๊ณต์ ํ๊ธฐ (๋ฉ์์ง ํ ํ๋ฆฟ)iOS 2024. 12. 5. 18:58
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ํํ ๋ง์ด ์ฌ์ฉํ๋ ์นด์นด์คํก ๊ณต์ ๋ฅผ ํด๋ณผ๊ฑด๋ฐ, ํด๋น ๊ณต์ ๋ฅผ ์ปค์คํ ํ๊ฒ ๋ง๋ค์ด๋ณด๋ ค๊ณ ํด์! ๐๐ป ์๋ฅผ๋ค์ด์ ๊ทธ๋ฅ ๋งํฌ๋ ์ด๋ฏธ์ง๋ง ๋ณด๋ด๋๊ฒ์ด ์๋๋ผ ์นด์นด์ค SDK์ ๊ธฐ๋ฅ์ ์ด์ฉํด ํด๋น ์นดํก ๊ณต์ ๋ฉ์์ง์ ๋ฒํผ์ ๋์ด ๋ค๋ฅธ ๋์์ ํ๋ค๋์ง ๋ฑ์ ๊ตฌํํด๋ณด๋ ค ํฉ๋๋ค ๐ ๊ทธ๋ผ ๋ฐ๋ก ์์ํด๋ณผ๊น์? ์นด์นด์คํก ๊ณต์ ํ๊ธฐ (๋ฉ์์ง ํ ํ๋ฆฟ์ ํ์ฉํ)๊ฐ์ฅ ๋จผ์ ํด์ผํ ์ผ์ ๋น์ฐํ๊ฒ๋ ์นด์นด์ค SDK ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค๋๊ฒ์ด๊ฒ ์ฃ ?์ ๋ SPM์ผ๋ก ๊ฐ์ ธ์์ต๋๋ค. ํด๋น SDK๋ฅผ ์ฐ๋ฆฌ SPM์์ ์ถ๊ฐํ๋ฏ์ด ์ฝ๊ฒ ๊ฒ์ํ์ฌ ๊ฐ์ ธ์ต๋๋ค.์ด๋ ์ฌ๋ฌ ํจํค์ง ํ๋ก๋ํธ๋ก ์ฌ๋ฌ๊ฐ๊ฐ ๋ณด์ผํ ๋ฐ ์ฌ๊ธฐ์ ํ์ํ๊ฒ๋ง ์ถ๊ฐํ์ ๋ ๋ฉ๋๋ค!Add to Target์ ๊ผญ ํด๋น ํ๋ก์ ํธ ํ๊ฒ์ผ๋ก ๋ง์ถฐ์ค์ผ์ง ์๊ทธ๋ฌ๋ฉด i..
-
ETag ์บ์ฑ์ผ๋ก ์ฑ ์ฑ๋ฅ ์ต์ ํํ๊ธฐSwift 2024. 11. 26. 18:51
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ETag๋ฅผ ์ด์ฉํด ๋คํธ์ํฌ ์บ์ฑ์ ํ์ฌ ์ฑ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณผ๊ป์ ๐๐ป ETag ์บ์ฑ์ผ๋ก ์ฑ ์ฑ๋ฅ ์ต์ ํํ๊ธฐ๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ์์ ๋คํธ์ํฌ ์ต์ ํ๋ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๋ ํต์ฌ ์์์ ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์ HTTP ํ๋กํ ์ฝ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ์ค ํ๋์ธ ETag(Entity Tag)์ ๋ํด ์์ธํ ์์๋ณด๊ณ , iOS ์ฑ์์ ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ETag?ETag๋ ์น ๋ฆฌ์์ค์ ํน์ ๋ฒ์ ์ ๊ณ ์ ํ๊ฒ ์๋ณํ๋ ์๋ณ์์์.์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฆฌ์์ค๋ฅผ ์๋ตํ ๋ ETag ํค๋๋ฅผ ํจ๊ป ์ ์กํ๋ฉฐ, ํด๋ผ์ด์ธํธ๋ ์ดํ ์์ฒญ ์ ์ด ๊ฐ์ ์ฌ์ฉํด ๋ฆฌ์์ค๊ฐ ๋ณ๊ฒฝ๋์๋์ง๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์๋์ ๊ฐ์ด ์๋ฅผ ๋ค์ด์, ์๋ฒ์ ์๋ต ํค๋๋..
-
Consume noncopyable types in Swift (feat. WWDC 2024)Swift 2024. 11. 18. 18:58
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์ WWDC 2024์ Consume noncopyable types in Swift์ด๋ผ๋ ์ธ์ ์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป ์ธ์ ์ฃผ์ ๋ง ๋ณด๋ฉด Swift์์ ๋ณต์ฌํ ์ ์๋ ์ ํ ์๋นํ๊ธฐ๋ผ๊ณ ํด์ํด๋ณผ ์ ์์ด์ ๐ ๊ทธ๋ผ, Swift์์ ๋ณต์ฌ๊ฐ ๋ญ๊ณ ์ธ์ ๋ณต์ฌ ๋ถ๊ฐ๋ฅํ ์ ํ์ ์๋นํด์ผํ๋์ง ๊ทธ๋ฆฌ๊ณ ๊ฐ ์์ ๊ถ์ ํตํด ์๋๋ฅผ ๋ช ํํ ์ด๋ป๊ฒ ํํํ ์ ์๋์ง ๋ฑ์ ์ง์ค์ ์ผ๋ก ๋ค๋ค๋ณด์์ฃ ๐๐ป Consume noncopyable types in Swift์ต๊ทผ Swift์์ ๋ณต์ฌํ ์ ์๋ ์ ํ์ ๋์ ํ์ต๋๋ค. ์์ธํ ์์๋ณด๊ธฐ ์ ๋ณต์ฌ๋ ๋ฌด์์ธ์ง๋ถํฐ ์์๋ณด์์ฃ ! Copying ํด๋น ํ๋ ์ด์ด๋ผ๋ ๊ตฌ์กฐ์ฒด๋ฅผ ๊ฐ์ง ์ธ์คํด์ค๊ฐ ์๊ณ ๊ทธ ์ธ์คํด์ค๋ฅผ player2์ ํ ๋นํ๋ฉด ๋ณต์ฌ๊ฐ ์ผ์ด..
-
SwiftUI๋ฅผ ์ด์ฉํ ์ธํฐ๋ํฐ๋ธ ์ ๋๋ฉ์ด์ SwiftUI 2024. 11. 1. 18:50
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ์ ๊ฐ ํ์ํด์ ๊ตฌํํด๋ณด๋ค๊ฐ ์ด๋ฐ๊ฒ๋ SwiftUI๋ก ์ฝ๊ฒ ๊ตฌํํ ์ ์๊ตฌ๋ ํ๋๊ฑธ ์๊ฐํด๋ณผ๊น ํฉ๋๋ค ๐๐ป ๋ฐ๋ก SwiftUI๋ฅผ ์ด์ฉํ ์ธํฐ๋ํฐ๋ธ ์ ๋๋ฉ์ด์ ์ด ๊ทธ ์ฃผ์ ์ ๋๋คใ ใ ์ด๋ฒ ํฌ์คํ ์ ๊ฐ๋ ์ ์ธ ์ค๋ช ๊ทธ๋ฐ๊ฒ๋ณด๋ค ์ค์ ๊ตฌํ์ ๊ธฐ๋ฐํ๊ณ ์๊ธฐ์ ์ฝ๋๋ฅผ ์ฃผ์๊น๊ฒ ๋ณด๋๊ฒ์ด ์ข์๊ฒ ๊ฐ์ต๋๋ค! โ ๏ธ ์ธํฐ๋ํฐ๋ธ ์ ๋๋ฉ์ด์ ์ธํฐ๋ํฐ๋ธ๊ฐ ๋ญ๊น์? ์ด๋ฐ ๋ป์ ๊ฐ์ง๊ณ ์๋ค๊ณ ๊ตฌ๊ธ AI, ์ฌ๋ฏธ๋์ด๊ฐ ๋งํด์ฃผ๋ค์. ์ฆ, ์ธํฐ๋ํฐ๋ธ ์ ๋๋ฉ์ด์ ์ด๋ผ๋๊ฒ์ ์๋ฐฉํฅ์ ์ ๋๋ฉ์ด์ ์ ๋ปํ๊ฒ ๋๋๊ฒ๋๋ค.์ฌ์ฉ์์ ์ ๋ ฅ์ด๋ ๋์์ ๋ฐ์ํด ๋ณํํ๋ ๋์ ์ธ ์ ๋๋ฉ์ด์ ์ ๋งํด์.๊ทธ๋ฐ ๊ตฌํ์ ์ ๋ง ๋ฌด๊ถ๋ฌด์งํ๊ฒ ์๊ฐํ๋๋ก ํผ์ณ๋ณผ ์ ์๊ฒ ์ง๋ง, ์ ๋ ํ๋์ ์์๋ฅผ ๊ฐ์ง๊ณ ๊ทธ ์ธํฐ๋ํฐ๋ธ ์ ๋๋ฉ์ด์ ๊ตฌํ์ ์ดํด..
-
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 - ScrollPositionSwiftUI 2024. 10. 14. 18:56
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์ ScrollPosition์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป ScrollPosition์ด๋ฒ iOS 18๋ก ์ ๋ฐ์ดํธ ๋๋ฉด์ SwiftUI์์ ScrollPosition ํ์ ์ด ์๊ธฐ๋ฉด์ ์ด์ ๊ด๋ จ๋ ๋ชจ๋ํ์ด์ด๋ค๋ก ์คํฌ๋กค ๋ทฐ์ ๊ธฐ๋ฅ์ด ๋ ํธ๋ฆฌํด์ก์ต๋๋ค ๐ ๊ธฐ์กด์, SwiftUI์์ ScrollView๋ฅผ ์ฌ์ฉํ ๋, ํน์ ์์น๋ก ์คํฌ๋กค์ ์ด๋์ํค๊ฑฐ๋ ํ ๋ ์ฐ๋ฆฌ๋ ScrollViewReader๋ฅผ ํ์ฉํด์ scrollTo ๋ฉ์๋๋ก ๋์ ์์ผ์คฌ์ต๋๋ค. ์ด์ ๊ด๋ จํด์๋ ์๋ ํฌ์คํ ์ ์ฐธ๊ณ ํด๋ณด๋ฉด ์ด๋ฒ ํฌ์คํ ์์ ๋ค๋ค๋ณผ ScrollPosition๊ณผ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ํ์ธํด๋ณผ ์ ์์ด์! SwiftUI - ScrollViewReader์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ..