Slide 1

Slide 1 text

Add custom views and modifiers to the Xcode Library @struuuuggle 2020/07/09 SwiftѪ޷ձεϐϯΦϑ WWDC20ηογϣϯཁ໿ձ @ΦϯϥΠϯ

Slide 2

Slide 2 text

ࣗݾ঺հ

Slide 3

Slide 3 text

ࠓ೔࿩͢͜ͱ ● Xcode LibraryΛ࢖༻͢Δ̏ͭͷϝϦοτ ● ࢖༻࣌ʹؾΛ͚ͭΔ͜ͱ̎ͭ


Slide 4

Slide 4 text

ઌʹ݁࿦

Slide 5

Slide 5 text

Xcode Libraryʹࣗ࡞ͨ͠View΍ViewModifierΛ ௥ՃͰ͖ΔΑ͏ʹͳΔ
 ηογϣϯλΠτϧΛ΄΅ͦͷ··࿨༁͚ͨͩ͠ Xcode LibraryΛ࢖͏ͱ؆୯ʹΞηοτΛ
 ݺͼग़ͤΔΑ͏ʹͳΔ
 γϣʔτΧοτҰͭͰݺͼग़ͤΔ
 υϥοά&υϩοϓʹΑΔݺͼग़͠΋Մೳ ※Ξηοτ: ͜͜Ͱ͸View, Modifier, Snippet, Media, ColorΛࢦ͢ ݁࿦

Slide 6

Slide 6 text

Xcode LibraryΛ࢖͏̏ͭͷϝϦοτ

Slide 7

Slide 7 text

Discoverability ΞηοτΛ୳͠΍͍͢ Learning Ξηοτͷ࢖͍ํΛ؆୯ʹֶ΂Δ Visual Editing υϥοά&υϩοϓͰΞηοτΛ൓өͰ͖Δ ※Ξηοτ: ͜͜Ͱ͸View, Modifier, Snippet, Media, ColorΛࢦ͢ Xcode LibraryΛ࢖͏̏ͭϝϦοτ

Slide 8

Slide 8 text

ඞཁͳ΋ͷ

Slide 9

Slide 9 text

LibraryContentProviderʹద߹ͨ͠ܕ ඞཁͳ΋ͷ

Slide 10

Slide 10 text

LibraryContentProviderͷத਎

Slide 11

Slide 11 text

࣮૷ͯ͠ΈΑ͏ ʙViewฤʙ

Slide 12

Slide 12 text

࣮૷ͯ͠ΈΑ͏ ʙViewฤʙ

Slide 13

Slide 13 text

࣮૷ͯ͠ΈΑ͏ ʙViewฤʙ

Slide 14

Slide 14 text

←ࣗ࡞ͨ͠View ࣮૷ͯ͠ΈΑ͏ ʙViewฤʙ

Slide 15

Slide 15 text

Ҿ਺ʹ͸ݺͼग़ͨ͠ͱ͖ͷ σϑΥϧτ஋Λઃఆ͓ͯ͘͠ ࣮૷ͯ͠ΈΑ͏ ʙViewฤʙ

Slide 16

Slide 16 text

categoryʹ͸.layoutΛࢦఆͯ͠ΈΔ ※.layoutͷଞʹ͸.effect, .control, .other͕͋Δ → LibraryItem.Categoryࢀর ※LibraryItemͷinitializerʹ͸ଞʹ΋Ҿ਺͕ଘࡏ͢Δ → visible, title, matchingSignature ࣮૷ͯ͠ΈΑ͏ ʙViewฤʙ

Slide 17

Slide 17 text

࣮૷ͯ͠ΈΑ͏ ʙViewฤʙ Library(⌘+ Shift+L)Λ։͘ͱɺઌఔ ௥Ճͨ͠NoteListRow͕ީิʹग़ͯ͘ Δ

Slide 18

Slide 18 text

࣮૷ͯ͠ΈΑ͏ ʙView Modifierฤʙ

Slide 19

Slide 19 text

Viewͷͱ͖ͱಉ͡Α͏ʹ LibraryItemΛఆٛ͢Δ ࣮૷ͯ͠ΈΑ͏ ʙView Modifierฤʙ

Slide 20

Slide 20 text

γάωνϟ͸ modifiers(base:) -> [LibraryItem] ࣮૷ͯ͠ΈΑ͏ ʙView Modifierฤʙ

Slide 21

Slide 21 text

ModifierΛ෇༩͢ΔViewͷ छྨΛࢦఆ͢Δ ࣮૷ͯ͠ΈΑ͏ ʙView Modifierฤʙ

Slide 22

Slide 22 text

1. ࣗ࡞ͨ͠ModifierΛ౉͢ 2. Ҿ਺ʹ͸σϑΥϧτ஋Λॻ͍͓ͯ͘ ࣮૷ͯ͠ΈΑ͏ ʙView Modifierฤʙ

Slide 23

Slide 23 text

ݺͼग़ͯ͠ΈΑ͏

Slide 24

Slide 24 text

ݺͼग़ͯ͠ΈΑ͏ ͜͜ʹࣗ࡞ͨ͠.style(_:) Λࠩ͠ࠐΈ͍ͨʂ

Slide 25

Slide 25 text

ݺͼग़ͯ͠ΈΑ͏ ͓΋ΉΖʹ㵰+Shift+LΛԡͯ͠ɺ .style(_:)Λ୳͢

Slide 26

Slide 26 text

ݺͼग़ͯ͠ΈΑ͏ ૠೖ׬ྃ

Slide 27

Slide 27 text

ؾΛ͚ͭΔ͜ͱ̎ͭ

Slide 28

Slide 28 text

Canvas͸։͍͓ͯ͘ ※Xcode Version 12.0 beta 2 (12A6163b)ͷڍಈ

Slide 29

Slide 29 text

1. Canvas͸։͍͓ͯ͘ Canvasදࣔ࣌

Slide 30

Slide 30 text

1. Canvas͸։͍͓ͯ͘ LibaryContentProvider:viewsͰ࣮૷ ͨ͠NoteListRow͕ଘࡏ͢Δ Canvasදࣔ࣌

Slide 31

Slide 31 text

1. Canvas͸։͍͓ͯ͘ LibaryContentProvider:viewsͰ࣮૷ ͨ͠NoteListRow͕ଘࡏ͢Δ Canvasඇදࣔ࣌

Slide 32

Slide 32 text

1. Canvas͸։͍͓ͯ͘ LibaryContentProvider:viewsͰ࣮૷ ͨ͠NoteListRow͕ଘࡏ͢Δ Canvasඇදࣔ࣌ ViewsͱModifiers͕͍ͳ͍⚡

Slide 33

Slide 33 text

2. LibraryContentͷ؅ཧ

Slide 34

Slide 34 text

AppleެࣜͷαϯϓϧίʔυͰ͸ɺ HogeViewʹରͯ͠HogeViewLibraryContent ͱ͍͏ߏ଄ମΛ࡞੒͍ͯ͠Δ →ComponentຖʹLibraryContentΛ࡞੒ͯ͠ΈΑ͏ ਖ਼௚ख୳ΓͳͷͰ͜ͷ͋ͨΓͷϓϥΫςΟεʹ͍ͭͯੋඇҰॹʹٞ࿦͠·͠ΐ͏ 2. LibraryContentͷ؅ཧ

Slide 35

Slide 35 text

·ͱΊ

Slide 36

Slide 36 text

LibraryContentProviderʹద߹ͨ͠ܕΛ༻ҙ →LibraryItemܦ༝ͰΞηοτΛXcode Libraryʹ௥Ճ Xcode Libraryʹ௥Ճͨ͠Ξηοτ͸؆୯ʹݺͼग़͠Մೳ →Xcode Previewͱͷ૬ੑ˕ υΩϡϝϯτ΍ίʔυΛړͬͯΞηοτΛ୳͢ख͕ؒল͚Δ →େن໛ϓϩδΣΫτͰͦ͜ޮՌΛൃش →৽ϝϯόʔͷΦϯϘʔσΟϯάʹ΋ߩݙͦ͠͏ ·ͱΊ

Slide 37

Slide 37 text

ࢀߟ ● Add custom views and modifiers to the Xcode Library - WWDC20 ● LibraryContentProvider - Apple Developer Documentation ● LibraryContentBuilder - Apple Developer Documentation ● Xcode 12 Beta 2 Release Notes

Slide 38

Slide 38 text

ิ଍

Slide 39

Slide 39 text

WWDC19௚ޙʙXcode11.0҆ఆ൛͕ग़Δ·ͰɺSwiftUI΍ Combine Framework౳ͷAPIʹ͸େ͖ͳมߋ͕͋ͬͨ ೋ࣍৘ใΛࢀর͢Δͱ͖͸࠷ऴߋ৽೔࣌ΛඞͣνΣοΫ͠Α͏ ͜ͷεϥΠυͷফඅظݶ͕੾ΕΔՄೳੑ΋ेೋ෼ʹ͋Δ Ұ࣍৘ใʹ৮Εͯɺৗʹ࠷৽ͷ৘ใʹΩϟονΞοϓ͠Α͏ ͓·͚

Slide 40

Slide 40 text

@LibraryContentBuilderͷ͓ӄͰɺLibraryContentProviderͷviewsΛ ഑ྻͬΆ͞ͳ͠ʹఆٛͰ͖Δ @LibraryContentBuilder ͋Γ @LibraryContentBuilder ͳ͠

Slide 41

Slide 41 text

ίϯύΠϥͷ͓ӄͰ… ● Distribution༻ͷϏϧυΛߦ͏ͱ͖ʹ͸ίϯύΠϥ͕ LibrayContentProviderͷ෦෼ΛಡΈඈ͹ͯ͘͠ΕΔ →#if DEBUG … #fi ͸ෆཁ ● ࣗ࡞ͨ͠ΞηοτͷAPI͕มΘͬͯ΋ɺXcode Library͕ ػೳ͢ΔΑ͏ʹίϯύΠϥ͕αϙʔτͯ͘͠ΕΔ →ίϯύΠϧΤϥʔΛ௚ͤ͹Xcode Library͸ͦͷޙ΋ػೳ͢Δ