2024 Monthly I Learned - kirseia/study GitHub Wiki

2024. 12
2024. 11
2024. 9
2024. 8
2024. 7
2024. 6
  • Flutter - UI ๊ด€๋ จ ์ง€์‹
  • iOS18 Translation API
  • WWDC24 Recap
  • iOS18 ์— ์ถ”๊ฐ€๋˜๋Š” SwiftUI ๊ธฐ๋Šฅ๋“ค
  • WWDC24 - ์„ธ์…˜ ๋ชจ์Œ
    • #1์ผ์ฐจ

    • Bring your appโ€™s core features to users with App Intents

      • App Intents framework ์„ค๋ช… - intents, entities, queries...
      • AppIntent ๋ฅผ (๋‹จ์ถ•์–ด) ๋ฐ›์•„๋“ค ์ผ ์ˆ˜ ์žˆ๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฒ•. ์–ด๋–ค Paramter ๋ฅผ ๋ฐ›๊ณ , ์•ฑ์„ ์‹คํ–‰ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์ •ํ•˜๊ณ , ์–ด๋–ค ๋™์ž‘์„ ํ•˜๊ณ , ์–ด๋–ค ๊ฒฐ๊ณผ๋ฅผ return ํ•˜๊ณ ...
      • ์ œ์–ด์„ผํ„ฐ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ฒ€์ƒ‰์— ๋…ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ๋“ฑ.
    • Bring your app to Siri

      • ๊ฐœ์ธํ™”๋œ ํ™”๋ฉด ์ธ์‹, ๋” ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ชฉ์†Œ๋ฆฌ, ๋” ํ’๋ถ€ํ•œ ์–ธ์–ด ์ดํ•ด.
      • ์•ฑ ๊ฐ„์˜ ์•ก์…˜์„ ์œ„ํ•ด app intents ๋ฅผ ๋” ๋งŒ๋“ค์—ˆ๋‹ค. 12๊ฐœ ๋„๋ฉ”์ธ์œผ๋กœ ์ผ๋‹จ ์‹œ์ž‘. (์‚ฌ์ง„, ๋ฉ”์ผ ๋“ฑ๋“ฑ)
      • ์–ด์ œ ๋ˆ„๊ตฌ๋ž‘ ์ฐ์€ ์‚ฌ์ง„์„ ์–ด๋–ค ์•ฑ์œผ๋กœ ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•ด์ค˜. ๊ฐ™์€ ๋ช…๋ น์ด ๊ฐ€๋Šฅํ•ด์ง.
      • assistant schemas -> @AssistantEntity(schema: ...) ๋กœ ์‹œ์ž‘ํ•ด์„œ ์ž‘์„ฑ ๊ฐ€๋Šฅ.
      • ๊ฐœ์ธํ™”๋œ context ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ. (๋‚ด ์‚ฌ์ง„์— ์žˆ๋Š” ๋ญ”๊ฐ€๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ์•ฑ์„ ์—ฐ๋‹ค๊ฑฐ๋‚˜...)
    • Meet Swift Testing โ˜†

      • Building Blocks - ํ…Œ์ŠคํŠธ ์ƒ์„ฑ์‹œ XCTest ๋Œ€์‹ ์— SwiftTesting ์„ ์„ ํƒํ•ด์„œ ๋งŒ๋“ค์–ด์•ผ ํ•จ.
      • import Testing, ๊ทธ๋ฆฌ๊ณ  @Test ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ. async / throws ์ง€์›. ๊ฒฐ๊ณผ ์ฒดํฌ๋Š” #expect() ๋กœ ํ•œ๋‹ค.
      • ์ •๋ฆฌ -> ํ…Œ์ŠคํŠธ ํ•จ์ˆ˜๋Š” @Test , ๊ฒฐ๊ณผ ์ฒดํฌ๋Š” #expect() ๋กœ
      • ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ธํžˆ ๋ณด์—ฌ์ค€๋‹ค... ! ๊ตณ!
      • #require() ๋กœ not nil ์ฒดํฌ,
      • ์กฐ๊ฑด ์ค„ ์ˆ˜ ์žˆ์Œ. @Test("์ œ๋ชฉ", .enabled() , .disabled(), .timeLimit(.minute(3)) ๋“ฑ๋“ฑ
      • @Suite ๋กœ ๊ทธ๋ฃนํ™” ๊ฐ€๋Šฅ
      • @Test(arguments: []) ๋กœ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณตํ•œ Input์„ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ ํ•จ. - ๋ฐ˜๋ณต์ด ์•„๋‹ˆ๋ผ ๋™์‹œ์— ๋Œ์•„๊ฐ = ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„ ๋‹จ์ถ• (!!!)
    • Migrate your app to Swift 6

      • ๊ธฐ์กด ์•ฑ์„ Swift6 ์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง ํ•˜๋Š” ๊ณผ์ •์„ ๋ณด์—ฌ์คŒ.
      • concurrency check ๋Š” complete ๋กœ ํ•ด์„œ ๋ฐœ์ƒํ•˜๋Š” ์›Œ๋‹๋“ค์„ ์ •๋ฆฌ,
      • global shared ๋ณ€์ˆ˜ ๊ฐ™์€๊ฑฐ๋Š” read-only ๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜, global actor (์˜ˆ- @MainActor) ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค. ๋˜๋Š” nonisolated(unsafe) ๋กœ ํ•œ๋‹ค.
      • best ๋Š” read-only ๋กœ ์ฒ˜๋ฆฌ. (๊ฐ€๋Šฅํ•˜๋ฉด)
      • ๋‹ค๋ฅธ thread ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธฐ๋ ค๋ฉด sendable ๋กœ ๋งŒ๋“คํ•„์š”๊ฐ€ ์žˆ์Œ.
        • ๋‚ด๋ถ€ ๋ณ€์ˆ˜๊ฐ€ ์ ‘๊ทผ ๋ถˆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ•˜๋ฉด nonisolate(unsafe) ์ฒดํฌ๋ฅผ ๋ถ™์—ฌ์ค„ ์ˆ˜๋„ ์žˆ์Œ. ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ฉด ๋‚ด๋ถ€ ๋ณ€์ˆ˜๋„ sendable ๋กœ ๋งŒ๋“ค๊ธฐ.
    • SwiftUI essentials

      • SwiftUI ๊ฐ„๋‹จํžˆ ์†Œ๊ฐœ. ๊ธฐ์กด์— ์•Œ๋˜ ์‚ฌ๋žŒ์€ ๊ตณ์ด ์•ˆ๋ด๋„ ๋  ๋“ฏ.
      • Text().contentTransition(.numericText(value: ...))
    • Whatโ€™s new in StoreKit and In-App Purchase โ˜†

      • SubscriptionStoreView() / group / marketingCOntent - feture ๋“ฑ๋“ฑ์„ ์ถ”๊ฐ€ํ•ด์ค„ ์ˆ˜ ์žˆ์Œ.
      • ์–ด๋–ป๊ฒŒ ๋””์ž์ธ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์˜ต์…˜๋“ค ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์Œ.
      • win-back offer (์ด์ „ ๊ตฌ์ž…์ž/๊ตฌ๋…์ž์—๊ฒŒ ์—ฐ์žฅ์„ ์œ„ํ•œ ํ”„๋กœ๋ชจ์…˜ ๊ฐ™์€๊ฑฐ) ์ œ๊ณต ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
      • storekit2 - ios 15 ๋ถ€ํ„ฐ ๊ฐ€๋Šฅ!
    • Whatโ€™s new in SwiftUI โ˜†

      • ์•„๋ž˜์— ์ƒˆ๋กœ์šด view ๋“ค์ด ์ถ”๊ฐ€๋˜์—ˆ์Œ
      • TabView()
      • ControlWidget() - ์ œ์–ด์„ผํ„ฐ์— ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ๋Š” ์œ„์ ฏ
      • TableView()
      • MeshGradient()
      • ...
      • @Previewable @State ๊ฐ€ ์ถ”๊ฐ€๋˜์–ด preview ์—์„œ @state ๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค.
      • ์Šคํฌ๋กค ๊ด€๋ จํ•ด์„œ๋„ ์ถ”๊ฐ€๋œ๊ฒŒ ๋งŽ์Œ. (scroll position ์œผ๋กœ ๋™์ž‘ ์ฒ˜๋ฆฌ ๊ฐ™์€๊ฑฐ)
      • TextRenderer - ํ…์ŠคํŠธ์— metal / shader ๋“ฑ์˜ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
    • Whatโ€™s new in watchOS 11

      • Live Activities ๋ฅผ ์›Œ์น˜OS ์—์„œ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋์Œ.
      • interactive widget ๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ด์กŒ์Œ.
      • double tap ์•ก์…˜์ด ์ถ”๊ฐ€๋จ. ํ™”๋ฉด์—์„œ ๋ˆ„๋ฅด๋ฉด main ๊ธฐ๋Šฅ์„ (์ง€์ •ํ•œ) ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ. (์›Œ์น˜ os ์—์„œ ์‚ฌ์šฉํ•˜๋Š” quick button ๊ฐ™์ด ์‚ฌ์šฉ ๋  ๋“ฏ)
    • #2์ผ์ฐจ

    • Bring expression to your app with Genmoji

      • Personalized content ๊ฐ€ ์ด๋ชจ์ง€ ํ‚ค๋ณด๋“œ์— ์ถ”๊ฐ€๋จ. (์Šคํ‹ฐ์ปค, genemoji ...)

      • Genmoji ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜์ž„ (NSAdaptiveImageGlyph)

      • Square aspect ratio, multiple resolutions

      • ์•ฑ์— ์ ์šฉํ•˜๊ธฐ

        • rich text view ๋ž‘ ๊ฐ™์ด ๋™์ž‘ํ•จ. supportsAdaptiveImageGlyph ๋ฅผ ํ™œ์„ฑํ™” ํ™”๋ฉด ๋จ (UITextView, TextView ...)
        • NSAttributedString.DocumentType.rtfd
        • not Unicode ! ํ•˜์œ„ํ˜ธํ™˜์„ฑ ๊ณ ๋ คํ•ด์•ผํ•จ.
      • Genemoji ๋Š” ์ด๋ชจ์ง€ ํ‚ค๋ณด๋“œ๋กœ ์ƒ์„ฑ๋˜์–ด ์ž…๋ ฅ๋  ์ˆ˜ ์žˆ๊ณ  (๋ณ„๋„ api ๋Š” ์—†๋Š”๋“ฏ) ๊ทธ ๊ฐ’์€ rtfData ๋กœ ์ฝ๊ณ  ์“ฐ์—ฌ์ง.

      • ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•˜๋‹ˆ๊นŒ ์ƒ์„ฑ ์ด๋ฏธ์ง€๋ฅผ ๋”ฐ๋กœ ์“ธ ์ˆ˜๋Š” ์žˆ์„ ๋“ฏ.

    • Enhance your UI animations and transitions

      • View Navigation ํ•  ๋•Œ hero ์ฒ˜๋Ÿผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•ด์ง.
        • SwiftUI - .navigationTransitionStyle() ๊ทธ๋ฆฌ๊ณ  .matchedTransitionSource(id: ,in: )์œผ๋กœ ๊ฐ€๋Šฅ.
      • view appear / disappear ์ˆœ์„œ ์ •๋ฆฌ ์ž˜ ๋˜์–ด์žˆ์Œ. (Appearance callbacks ๋‚ด์šฉ)
      • uikit ์— swiftui ์ฒ˜๋Ÿผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง. (๋ ˆ์ด์–ด ์ ์šฉ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€ ๋“ฏ...)
    • Extend your appโ€™s controls across the system

      • ์ œ์–ด์„ผํ„ฐ์— WidgetKit ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Œ.
      • ํ† ๊ธ€ / ๋ฒ„ํŠผ 2๊ฐ€์ง€ ํƒ€์ž…์œผ๋กœ ์ œ์–ด ๊ฐ€๋Šฅํ•ด์ง. (์Šฌ๋ผ์ด๋”๋Š”...? -_-?)
      • symbol / title / value 3๊ฐ€์ง€ ์ •๋ณด๋ฅผ ์ œ๊ณต ๊ฐ€๋Šฅ
      • StaticControlConfiguration ...
      • ๋ฏธ๋ฆฌ ์ •์˜๋œ ํ˜•์‹์œผ๋กœ ๋งŒ๋“ค๋ฉด ์ œ์–ด์„ผํ„ฐ, ์œ„์ ฏ, ์ƒ๋‹จ ๋ผ์ด๋ธŒ ์•กํ‹ฐ๋น„ํ‹ฐ ๋‹ค ์ ์šฉ...? ํ•  ์ˆ˜ ์žˆ์Œ. (๋ณ„๋„ ๊ตฌํ˜„ ํ•„์š”)
      • ๊ธฐ์กด ์œ„์ ฏ์ฒ˜๋Ÿผ configuration ์ œ๊ณต ๊ฐ€๋Šฅ, ์•ก์…˜ ๋ฒ„ํŠผ์œผ๋กœ ํŠน์ • ๋™์ž‘์„ On / off ํ•  ์ˆ˜ ์žˆ์Œ. (controlWidgetActionHint)
    • Get started with Writing Tools

      • ํ…์ŠคํŠธ๋ทฐ์˜ ๊ธฐ๋Šฅ (๋ณต์‚ฌ, ์‚ญ์ œ ๋“ฑ์˜ ํˆดํŒ ๊ธฐ๋Šฅ)์— writing tools ๊ฐ€ ์ถ”๊ฐ€ ๋จ.
      • ๊ต์ •, ์š”์•ฝ ๋“ฑ ๊ฐ€๋Šฅ.
      • TextKit2 ์— delegate ๊ฐ™์€๊ฑธ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋‚˜, writingTools enter / exit ์ฒดํฌ ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ธฐ๋Šฅ ์ œํ•œ์„ ํ•  ์ˆ˜ ์žˆ์Œ.
      • ๊ต์ • / ์š”์•ฝ ๊ธฐ๋Šฅ์ด ๋ณ„๋„ API๋กœ ์˜คํ”ˆ๋˜์–ด์žˆ์ง€๋Š” ์•Š์€ ๋“ฏ
    • Go further with Swift Testing

      • Meet Swift Testing ์„ธ์…˜์— ์ด์–ด์ง„ ๋‚ด์šฉ.
      • error cache -> #expect(throws: AAAError.specificError) ...์ด๋Ÿฐ์‹์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ.
      • known issues -> withKnownIssue { }
      • parameter ๋„˜๊ธฐ๋Š” ๊ฒƒ, multiple types ์„ ๋„˜๊ธธ ์ˆ˜ ์žˆ์Œ. zip(2๊ฐœ ํƒ€์ž…) ๋„˜๊ธฐ๋ฉด -> 2๊ฐœ ์กฐํ•ฉ์„ (combination) ๋‹ค ํ…Œ์ŠคํŠธ ํ•จ.
      • @Suite ๋Š” ๋‹ค๋ฅธ @Suite ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ.
      • @Tag ๋กœ ๊ฒฐ๊ณผ ๊ตฌ๋ถ„ ๋„์™€์คŒ
      • @Suite('', .serialized) ๋กœ ํ•œ๋ฒˆ์— ํŒจ๋Ÿฌ๋Ÿด ๋ง‰์„ ์ˆ˜ ์žˆ์Œ, await confirmation() ์œผ๋กœ async ํ•จ์ˆ˜ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ
    • Whatโ€™s new in App Intents

      • Sportlight integration
        • CSSerchableItem - indexedEntity ์ถ”๊ฐ€. ์ŠคํŒŸ๋ผ์ดํŠธ์— ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ๋…ธ์ถœ๋˜๊ณ , siri๊ฐ€ ์ดํ•ดํ•˜๊ณ  ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์คŒ
        • TrailEntity ...
      • Entities and files
        • Transferable ์„ ํ†ตํ•ด์„œ ๋‹ค๋ฅธ ์•ฑ์— ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์ด ๊ฐ€๋Šฅํ•ด์ง. (์˜ˆ์‹œ๋Š” ์šด๋™์•ฑ์—์„œ ์šด๋™ ํ†ต๊ณ„/์š”์•ฝ ๋“ฑ๋“ฑ์„ png / txt ๋“ฑ์œผ๋กœ ์ „๋‹ฌํ•ด์„œ ๋ฉ”๋ชจ์žฅ์— ์“ฐ๋Š” ํ˜•ํƒœ)
        • WWDC22 ์—์„œ Transferable ์„ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ์Œ.
        • AppIntent ๊ตฌํ˜„์œผ๋กœ ๋‹ค๋ฅธ ์•ฑ์—์„œ ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ค ํƒ€์ž…์„ ๋ฐ›์„์ง€ ์ •ํ•ด์„œ ๋ฐ›๋Š” ๋™์ž‘์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ.
      • Universal links
        • URLRepresentableEntity/Enum/Intent 3๊ฐ€์ง€๊ฐ€ ์ถ”๊ฐ€.
    • #3์ผ์ฐจ

    • Build a great Lock Screen camera capture experience

      • ๊ธฐ๊ธฐ ์ž ๊ธˆ ์ƒํƒœ์—์„œ ์ดฌ์˜์„ ํ•  ์ˆ˜ ์žˆ๋Š” (๊ธฐ์กด ๊ธฐ๋ณธ ์นด๋ฉ”๋ผ์ฒ˜๋Ÿผ) capture extension ์ด ์ถ”๊ฐ€๋จ.
      • ์ž ๊ธˆ ์ƒํƒœ์—์„œ ์ดฌ์˜์€ ๋ณด์•ˆ์ด ์ž˜ ์ด๋ค„์ง„ ์ƒํƒœ์—์„œ ์ง„ํ–‰๋œ๋‹ค (์‚ฌ์ง„ ์˜์—ญ ๋ถ„๋ฆฌ, ๋„คํŠธ์› ์•ˆ๋จ, shared preferences ์ ‘๊ทผ ์•ˆ๋จ ๋“ฑ)
      • (๋ญ˜ ํ•  ์ˆ˜ ์žˆ์„์ง€ ์•„์ด๋””์–ด๊ฐ€ ๋– ์˜ค๋ฅด์ง„ ์•Š๋„ค...;)
    • Build multilingual-ready apps

      • text.localizedStandardRange(of: search) ์ด๋Ÿฐ์‹์œผ๋กœ ์–ธ์–ด๋ณ„๋กœ ๋‹ค๋ฅธ๊ฑธ ์ฒ˜๋ฆฌ
      • typesettingLanguage
      • formatted
let nameComponents = PersonNameComponents
  (givenName: "็‘—็บ", familyName: "ๆฑช", nickname: "็บ็บ")

// Short Name (respects settings like โ€œPrefer Nicknamesโ€)
let shortName = โ€จ nameComponents.formatted(.name(style: .short)) // ็บ็บ

// Abbreviated Name (can be used for monograms)
let monogram = โ€จ nameComponents.formatted(.name(style: .abbreviated)) // ๆฑช
  • Discover Swift enhancements in the Vision framework

    • ๊ธฐ์กด visionkit ๊ทธ๋ƒฅ ์†Œ๊ฐœ. (api ๋ฌธ์„œ์—๋Š” ios18์—์„œ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ๊ฒ‰์€ ๋น„์Šท, ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฐœ์„ ์ด ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ž„)
  • Meet the Translation API

  • Demystify SwiftUI containers

    • Custom layout ๊ด€๋ จ, ForEach(subviewOf: ), ForEach(sectionOf ), Group(subviewOf: ) <- ์ƒˆ๋กœ ์ถ”๊ฐ€ ๋จ.
    • Environment values (flow down), preference values (flow up) (์—ฌ๊ธด ๊ธฐ์กด)
    • Ccontainer values (stay contained) <- ์ƒˆ๋กœ ์ถ”๊ฐ€ ๋จ.
  • Whatโ€™s new in SF Symbols 6

    • animation presets ์ถ”๊ฐ€, wiggle, rotate, ...
    • color variables
    • ์ƒˆ๋กœ์šด feature๋Š” sf symbols 6 ์•ฑ์—์„œ ํ™•์ธ๊ฐ€๋Šฅ. + ์ƒˆ๋กœ์šด symbols ์ถ”๊ฐ€
  • Whatโ€™s new in location authorization

    • CLServiceSession ! ์ž„์‹œ๋กœ ๊ถŒํ•œ์„ ํš๋“ํ•˜๊ธฐ ์œ„ํ•ด์„œ...?
  • Support semantic search with Core Spotlight

    • ์ž์—ฐ์–ด๋กœ ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ ์˜๋ฏธ์— ๋”ฐ๋ฅธ (๋น„์Šทํ•œ ์˜๋ฏธ๊นŒ์ง€) ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€..๋ฅผ ์„ค๋ช…ํ•ด์คŒ.
    • Searchable content donation - (ํ…์ŠคํŠธ, ๋ฏธ๋””์–ด์— ์˜๋ฏธ ๊ฒ€์ƒ‰์ด ์ž˜ ๋™์ž‘ํ•จ.)
      • CoreSpotlightDelegate extension ์„ ์ถ”๊ฐ€ํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ.
  • Design App Intents for system experiences

    • Anything your app does should be an App Intent
    • Get / Edit / Create / Delete / Open . ์ด๋ ‡๊ฒŒ๊ฐ€ ์ฃผ์š” ๊ธฐ๋Šฅ ์†์„ฑ
      • ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์„ ์—ฌ๋Ÿฌ intent ๋กœ ๋งŒ๋“ค์ง€ ๋ง ๊ฒƒ, ๋™์ž‘์„ intent๋กœ ๋งŒ๋“ค์ง€ ๋ง ๊ฒƒ (swipe down something, cancel something...)
    • App Intents ๊ตฌ์กฐ ๋งŒ๋“ค๊ธฐ : Parameter Types / Options/Required parameters / Toggles / Open Intents
  • #4์ผ์ฐจ

  • Get started with Dynamic Type

    • Accessibility audit tools ์ด ์žˆ์Œ. ํฐํŠธ ์ปค์กŒ์„ ๋•Œ ์ž˜๋ฆฌ๋Š”๊ฑฐ๋‚˜, ์Œ์„ฑ ์•ˆ๋‚ด๋ฅผ ์œ„ํ•œ text label ์ด ๋น ์กŒ์„ ๋•Œ ์•Œ๋ ค์คŒ.
    • dynamic layout ๋„ ๊ณ ๋ คํ•  ํ•„์š” ์žˆ์Œ. (ํฌ๊ธฐ ์ปค์กŒ์„ ๋•Œ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๋ฉด ๋‹ค๋ฅธ ๋ ˆ์ด์•„์›ƒ์„ ์“ด๋‹ค๊ฑฐ๋‚˜)

2024. 5
2024. 4
2024. 3
2024. 2
2024. 1
โš ๏ธ **GitHub.com Fallback** โš ๏ธ