WWDC 2023
-
Beyond Scroll Views (feat. WWDC 2023)SwiftUI 2023. 6. 15. 11:05
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์ API๋ฅผ ์ฌ์ฉํด ์คํฌ๋กค ๋ทฐ๋ฅผ ๋ ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด๊ฒ ์ต๋๋ค๐๐ป ํนํ ์ด์ ๊ณผ๋ ๋ฐฉ์์ผ๋ก ๋ค๋ฅธ ์คํฌ๋กค ๋ทฐ๋ฅผ ์ปค์คํ ํ๊ฒ ์ ์ํ๋๊ฑธ ๋ณด๋ คํด์. ์ฐ๋ฆฌ๊ฐ ์ฒ๋ฆฌํ๋ ๋ง์ ์ปจํ ์ธ ๋ ๊ณ ์ ๋ ํ๋ฉด์ ๋ค ๋ด์ ์ ์์ด ์คํฌ๋กค๋ง์ ๋ง์ด ์ด์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ๋ฉด์ ๋ง์๊ฒ์ ๋ด์ ์ ์์ฃ . SwiftUI๋ ์คํฌ๋กค์ ์ฑ์ ํตํฉํ ์ ์๋ ๋ช๊ฐ์ง ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค์ ์ ๊ณตํฉ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ ๊ทธ ์ค ํ๋์ธ ScrollView๋ฅผ ๋ณด๊ฒ ์ต๋๋ค! ScrollView์ ๋ํ ๊ฐ๋ต ์ ๋ฆฌ ์คํฌ๋กค ๋ทฐ๋ ์ปจํ ์ธ ๋ฅผ ์คํฌ๋กคํ ์ ์๋ building block์ ๋๋ค. ์คํฌ๋กค ๋ทฐ๋ ์คํฌ๋กค ๋ฐฉํฅ์ ์ค์ ํ๊ณ ๋ด๋ถ ์ปจํ ์ธ ๋ฅผ ๋ด์์ฃผ์ฃ . ํด๋น ์ปจํ ์ธ ๊ฐ ์คํฌ๋กค ๋ทฐ์ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ๋ฉด ํด๋น ์ปจํ ์ธ ์ค..
-
Model your schema with SwiftData (feat. WWDC 2023)SwiftData 2023. 6. 13. 12:02
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ ์ด์ SwiftData์ ๋ชจ๋ธ ์คํค๋ง๋ค์ ๋ํด ์์๋ณด๋ ค ํฉ๋๋ค๐๐ป Utilizing schema macros ์คํค๋ง ๋งคํฌ๋ก๋ฅผ ์ต๋ํ ํ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ณผ๊น์? ์คํค๋ง ๋งคํฌ๋ก๋ฅผ ํ์ฉํ๋ฉด ์ฑ์์ ์๋ฒฝํ๊ฒ ์๋ํ๋๋ก ์ง์์ ์ธ ํ๊ฒฝ์ ๋์์ ์ปค์คํ ํ๊ฒ ์ง์ ํ ์ ์์ด์. @Model final class Trip { var name: String var destination: String var start_date: Date var end_date: Date var bucketList: [BucketListItem]? = [] var livingAccommodation: LivingAccommodation? ... } ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋นํ๋ ๋ชจ๋ธ์ด ์์๋ ์ฌ๊ธฐ์ ๊ฐ ..
-
Build an app with SwiftData (feat. WWDC 2023)SwiftData 2023. 6. 13. 10:51
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ WWDC 2023์์ ๊ณต๊ฐ๋ SwiftData๋ก ์ฑ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐๐ป ์ฐ์ ์ด๋ฒ ํฌ์คํ ์ WWDC 2023์ ์น์ ์ ๋ณด๋ฉด์ ์๊ฐํ๋ ์ฑ์ ๋ค์ด ๋ฐ์ ๊ฐ์ด ์งํ๋๋ ํ์์ ๋๋ค. ๊ทธ๋ ๊ธฐ์ ์๋ ๋งํฌ๋ฅผ ํตํด ํด๋น ํ๋ก์ ํธ๋ฅผ ๋ค์ด ๋ฐ์์ ๊ฐ์ด ์ดํด๋ณด๋ฉด์ ํ๋ฆ์ ์ดํดํ๋๊ฒ์ด ์ข์ต๋๋ค๐ https://developer.apple.com/documentation/SwiftUI/Building-a-document-based-app-using-SwiftData Building a document-based app using SwiftData | Apple Developer Documentation Code along with the WWDC presen..
-
Expand on Swift macros (feat. WWDC 2023)Swift 2023. 6. 10. 09:37
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ Swift 5.9์์ ์๊ฐ๋ ๋งคํฌ๋ก ๊ธฐ๋ฅ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค๐ Why macros? ์ฐ์ ๋งคํฌ๋ก๋ฅผ ์ ๋ง๋ค์๋์ง ๊ทธ ์ ํ์ ์๊ธฐ๋ฅผ ๋ค์ด๋ณผ๊น์? Swift๋ ํํ์ ์ธ ์ฝ๋์ API๋ฅผ ์์ฑํ๋๊ฒ์ ๋ฅํฉ๋๋ค. ๊ทธ๋ ๊ธฐ์ ์ฌ์ฉ์๊ฐ ๋ฐ๋ณต์ ์ธ ์์ฉ๊ตฌ ์์ฑ์ ํผํ๋๋ฐ ๋์์ด ๋๋ result builders์ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๊ณค ํ์ฃ . ์ฆ ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด Codable์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ํํ ์ ํ์ ์์ด Codable์ ์ฌ์ฉํ ์ ์๊ณ Codable ์ง์์ ์ถ๊ฐํ๋๊ฒ์ด ์ฝ๋๋ฅผ ๋๋ฆฌ๋ฉด์๊น์ง ์์ฑํ ๊ฐ์น๊ฐ ์๋์ง ํ๋จํ๊ณ ๊ฒฐ์ ํ ํ์๊ฐ ์๊ฒ ๋ฉ๋๋ค. ์ฌ๊ธฐ๊น์ง๋ Swift ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ฉด์ ํ๋กํผํฐ ๋ํผ๋ผ๋์ง Result builders๋ผ๋์ง ๋ฑ ๋ง์ด ์ ํด๋ดค๋ ๊ธฐ..
-
Swift 5.9 ์ฌ์ฉ ๋ง๋ณด๊ธฐ (feat. WWDC 2023)Swift 2023. 6. 9. 15:41
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ Swift 5.9๊ฐ ์๊ฐ๋๋ฉด์ ์๋ก ๋์จ๊ฒ๋ค์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค๐๐ป ์ ์ฒด์ ์ผ๋ก Swift ๊ฐ๋ฐ ํ๋ก์ ํธ ๋ฐฉ์์ ์ ๋ฐ์ดํธ๋ถํฐ ์ธ์ด์ ์ผ๋ก ๋งคํฌ๋ก ๊ธฐ๋ฅ๋ ์ด๋ฒ์ ์๊ฒผ๊ณ ์ฑ๋ฅ ๋ฐ ์์ ๋๋ ๋ง์ด ํฅ์๋์๋ค๊ณ ํด์. ์ ๋ ์ด๋ฒ ํฌ์คํ ์์๋ ์ค์ ์ ์ผ๋ก Swift ์ธ์ด์๋ง ํฌ์ปค์ฑ์ ๋ง์ถฐ ํ๋ฒ ๋ณผ๊นํฉ๋๋ค. if ๋ฐ switch ํํ ๋ณ์๋ฅผ ์ด๊ธฐํ ํ ๋ ์ด์ ๋ ์๋์ ๊ฐ์ด if ๋ฐ switch ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฆ, ์ฝ๋๋ฅผ ์ค์ด๋๋ฐ ๋ง์ ๋์์ ์ค๋๋ค๐ // if let score = 800 let simpleResult = if score > 500 { "Pass" } else { "Fail" } print(simpleResult) // switch let comp..
-
Explore SwiftUI Animation (WWDC 2023)SwiftUI 2023. 6. 8. 21:42
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ๋๋์ด ์ด๋ฒ WWDC 2023์์ ์๊ฐํ SwiftUI ์ ๋๋ฉ์ด์ ๋ถ๋ถ์ ๋ง์ง๋ง ์น์ ์ ๋ณผ ์ฐจ๋ก์ ๋๋ค ๐ ์ด๋ฒ ์ฃผ์ ๋ SwiftUI์ ์ ๋๋ฉ์ด์ ๊ธฐ๋ฅ์ ์ดํด๋ณด๊ณ ์ด๋ป๊ฒ ๋์ํด ์ธ์์ ์ธ ์๊ฐ ํจ๊ณผ๋ฅผ ์์ฑํ๋์ง ์์๋ณด๊ฒ ์ต๋๋ค. ๋ํ, SwiftUI๊ฐ ๋ทฐ์ ๋ ๋๋ง์ ์ ๋ฐ์ดํธํ๊ณ ๋ฌด์์ ์ ๋๋ฉ์ด์ ํ ์ง ๊ฒฐ์ ํ๊ณ ์๊ฐ์ ๋ฐ๋ผ ๊ฐ์ ๋ณด๊ฐํ๋ฉด์ ํ์ฌ ํธ๋์ญ์ ์ ๋ํ ์ปจํ ์คํธ๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ์ ๊ฐ์ด ์ดํด๋ณด์ฃ ! ์ ํ์์๋ ์ฑ์ ์ ๋๋ฉ์ด์ ์ ์ถ๊ฐํ๋ ๊ฒ์ ์์ฃผ ๊ฐ๋จํ๊ฒ ๋ง๋๋๊ฒ์ด SwiftUI ๊ฐ๋ฐ์ ์์ํ ๋ ํต์ฌ ๋๊ธฐ์ค ํ๋์๋ค๊ณ ํฉ๋๋ค. Anatomy of an update SwiftUI๊ฐ ๋ทฐ์ ๋ ๋๋ง์ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ฃ . ์ ์ฝ๋์ฒ๋ผ ์ด๋ฏธ์ง๊ฐ ํญ์ด ๋๋ฉด ์ค์ผ์ผ ์ฆ, ํฌ๊ธฐ๊ฐ ๋ณํ๋ ..
-
Advanced animations in SwiftUI (feat. WWDC 2023)SwiftUI 2023. 6. 8. 16:18
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ WWDC 2023์์ ์๊ฐ๋ SwiftUI์ ํฅ์๋ ์ ๋๋ฉ์ด์ ์ ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ Wind your way through advanced animations in SwiftUI SwiftUI์์ ๊ฐ์ ๋ ์ ๋๋ฉ์ด์ ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ํ๋ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฐ์ ์์ ์ SwiftUI์์ ์ด๋ฏธ ์๊ณ ์๋ ์ ๋๋ฉ์ด์ ๋ค์ ๋ํด ํ์ธํด๋ณผ๊น์? ๊ธฐ์กด SwiftUI์์ ์ต์ํ ์ ๋๋ฉ์ด์ import SwiftUI struct ContentView: View { var xcodeImage: Image @State private var selected: Bool = false var body: some View { xcodeImage .scaleEffect(selecte..
-
Discover Observation in SwiftUI (feat. WWDC 2023)SwiftUI 2023. 6. 8. 10:35
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ ์ด๋ฒ WWDC 2023์์ ์๊ฐ๋ SwiftUI์์ ๋ฐ์ดํฐ ํ๋ก์ฐ ๋ณํ๋ฅผ ๊ฐ์ ธ๊ฐ๋ฉด์ ์๋ก ์๊ธด ๋งคํฌ๋ก์ ๊ธฐ์กด ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๋ฑ ๋ฐฉ์์ ๋ณํ๋ค์ ๋ค๋ค๋ณผ๊นํด์๐๐ป ์ถฉ๋ถํ SwiftUI ๋ฐ์ดํฐ ๋ชจ๋ธ์ด Observation์ ํตํด ๊ฐ์ํ ๋์๊ณ ๋งคํฌ๋ก๊ฐ ๋ ๋ชจ๋ธ์ ๋จ์ํํ๊ณ ์ฑ ์ฑ๋ฅ์ ๊ฐ์ ํด์ค๋๋ค. ์ ๊ทธ๋ผ ์ผ๋ง๋ ๋ ํธ๋ฆฌํด์ก๊ณ ์ ์ฉํด์ก๋์ง ๊ฐ์ด ์ดํด๋ณด์์ฃ ๐บ๐ป What is Observation? ์๋ก ๋์จ Observation์ ๊ณผ์ฐ ๋ฌด์์ผ๊น์? Observation์ ํ๋กํผํฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ธฐ ์ํ ์๋ก์ด Swift ๊ธฐ๋ฅ์ ๋๋ค. ๋งคํฌ๋ก์ ๋๋จํ ๊ธฐ๋ฅ์ ํตํด ์ด๋ค์ง์ฃ . ์ฐ๋ฆฌ๊ฐ ํ์ ๊พธ๋ฆฌ๋ ๋ชจ๋ธ์ @Observable์ ์ถ๊ฐํ๋ ๊ฒ๋ง์ผ๋ก UI๊ฐ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋ณ๊ฒฝ..