Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SwiftUIのアニメーション_ちょっと触ってみた話
Search
riataso
June 27, 2025
Programming
0
7
SwiftUIのアニメーション_ちょっと触ってみた話
riataso
June 27, 2025
Tweet
Share
More Decks by riataso
See All by riataso
現在地から始まる物語:位置情報アプリ開発の冒険
riataso_kebin
1
36
Other Decks in Programming
See All in Programming
Reading Rails 1.0 Source Code
okuramasafumi
0
250
「手軽で便利」に潜む罠。 Popover API を WCAG 2.2の視点で安全に使うには
taitotnk
0
870
知っているようで知らない"rails new"の世界 / The World of "rails new" You Think You Know but Don't
luccafort
PRO
1
190
OSS開発者という働き方
andpad
5
1.7k
Performance for Conversion! 分散トレーシングでボトルネックを 特定せよ
inetand
0
3.4k
私の後悔をAWS DMSで解決した話
hiramax
4
210
🔨 小さなビルドシステムを作る
momeemt
4
690
奥深くて厄介な「改行」と仲良くなる20分
oguemon
1
570
Ruby Parser progress report 2025
yui_knk
1
460
ユーザーも開発者も悩ませない TV アプリ開発 ~Compose の内部実装から学ぶフォーカス制御~
taked137
0
190
楽して成果を出すためのセルフリソース管理
clipnote
0
190
複雑なフォームに立ち向かう Next.js の技術選定
macchiitaka
2
240
Featured
See All Featured
How to Ace a Technical Interview
jacobian
279
23k
Designing for Performance
lara
610
69k
Building an army of robots
kneath
306
46k
GraphQLとの向き合い方2022年版
quramy
49
14k
We Have a Design System, Now What?
morganepeng
53
7.8k
A designer walks into a library…
pauljervisheath
207
24k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.9k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
810
Designing Experiences People Love
moore
142
24k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Transcript
SwiftUIͷΞχϝʔγϣϯɺͪΐͬͱ৮ͬͯΈͨ 2025/06/27 mobile.stmn#12
ࣗݾհ ɾࣾձਓ3ͷΫϥυΤϯδχΞ(23ೖࣾ) riataso @riataso_kebin ɾίʔώʔΛ೩ྉʹಈ͍͍ͯ·͢☕
࣍ ɾΞχϝʔγϣϯͬͯͦ͠͏ʁ࣮... ɾSwiftUiΞχϝʔγϣϯͷ֓ཁ ɾදతΞχϝʔγϣϯհ ɾ࣮ࡍʹ࡞ͬͯΈͨʂσϞΞϓϦհ ɾ·ͱΊ
ݸਓ։ൃͷΞϓϦʹΞχϝʔγϣϯɺೖΕͯ·͔͢ʁ
Ξχϝʔγϣϯͬͯͦ͠͏ʁ࣮... 😅͢ΕOKͬͯࢥͬͯͯɺ Ξχϝʔγϣϯશવ৮ͬͯ·ͤΜͰͨ͠ɻ ɾ·ͣػೳΛͤ͞Α͏ ɾΞχϝʔγϣϯσβΠϯ༨༟͕͋ͬͨΒ… ɾͳͯ͘ಈ͘͠ɺ͍͍͔ͳɻ ΞχϝʔγϣϯΛޙճ͠ʢ࣮͠ͳ͍ɻɻʣঢ়ଶͰऴΘΔ
Ξχϝʔγϣϯͬͯͦ͠͏ʁ࣮... ΞχϝʔγϣϯΛͬͯΈͯ ɾجຊతͳͷͳΒҙ֎ͱ؆୯ ɾΞϓϦ͕ͪΌΜͱͯ͠ݟ͑Δʂ ͦΜͳSwiftUIΞχϝʔγϣϯͷ ໘ന͞Λগ͠Ͱײͯ͡Β͑ͨΒͱࢥ͍·͢ɻ
SwiftUiΞχϝʔγϣϯͷ֓ཁ
SwiftUIΞχϝʔγϣϯͷ֓ཁ SwiftUIͷΞχϝʔγϣϯͱʁ • ঢ়ଶมԽΛࣗಈతʹิؒͯ͠ΞχϝʔγϣϯԽ • એݴతͳهड़Ͱෳࡶͳ੍ޚ͕ෆཁ • @StateͳͲͷঢ়ଶཧͱ࿈ܞͯ͠ಈ࡞
දతͳΞχϝʔγϣϯհ
දతͳΞχϝʔγϣϯ SwiftUIͰΑ͘ΘΕΔجຊతͳΞχϝʔγϣϯख๏ɿ 1. ҉తΞχϝʔγϣϯ (.animation) • Ϗϡʔͷঢ়ଶมԽΛࣗಈͰΞχϝʔγϣϯ • ༻ྫɿϘλϯͷ৭มߋɺαΠζมߋ 2.
໌ࣔతΞχϝʔγϣϯ (withAnimation) • ಛఆͷλΠϛϯάͰΞχϝʔγϣϯ࣮ߦ • ༻ྫɿෳཁૉͷಉظΞχϝʔγϣϯ 3. τϥϯδγϣϯ (.transition) • Ϗϡʔͷදࣔ/ඇදࣔ࣌ͷΞχϝʔγϣϯ • ༻ྫɿը໘ભҠɺཁૉͷग़ݱ/ফࣦ
දతͳΞχϝʔγϣϯ SwiftUIͰΑ͘ΘΕΔجຊతͳΞχϝʔγϣϯख๏ɿ 1. ҉తΞχϝʔγϣϯ (.animation) • Ϗϡʔͷঢ়ଶมԽΛࣗಈͰΞχϝʔγϣϯ • ༻ྫɿϘλϯͷ৭มߋɺαΠζมߋ 2.
໌ࣔతΞχϝʔγϣϯ (withAnimation) • ಛఆͷλΠϛϯάͰΞχϝʔγϣϯ࣮ߦ • ༻ྫɿෳཁૉͷಉظΞχϝʔγϣϯ 3. τϥϯδγϣϯ (.transition) • Ϗϡʔͷදࣔ/ඇදࣔ࣌ͷΞχϝʔγϣϯ • ༻ྫɿը໘ભҠɺཁૉͷग़ݱ/ফࣦ
දతͳΞχϝʔγϣϯ
දతͳΞχϝʔγϣϯ 1. ҉తΞχϝʔγϣϯ (.animation) λοϓͰԁ͕มԽ͢ΔΞχϝʔγϣϯ ʲಈ࡞༰ʳ • ԁλοϓͰ isAnimated ͷঢ়ଶ͕ΓସΘΔ
• ৭: ੨ ⁶ ɺαΠζ: 100×100 ⁶ 200×200 • 0.5ඵͷͳΊΒ͔ͳΠʔζΠϯΞτ ʲ҉తΞχϝʔγϣϯͷಛʳ ✅ ঢ়ଶมԽΛࣗಈͰݕ ✅ .animationϞσΟϑΝΠΞҰͭͰ࣮ ✅ ෳͷϓϩύςΟΛಉ࣌ʹΞχϝʔγϣϯ
දతͳΞχϝʔγϣϯ Ξχϝʔγϣϯ ͳ͠ Ξχϝʔγϣϯ ͋Γ
දతͳΞχϝʔγϣϯ SwiftUIͰΑ͘ΘΕΔجຊతͳΞχϝʔγϣϯख๏ɿ 1. ҉తΞχϝʔγϣϯ (.animation) • Ϗϡʔͷঢ়ଶมԽΛࣗಈͰΞχϝʔγϣϯ • ༻ྫɿϘλϯͷ৭มߋɺαΠζมߋ 2.
໌ࣔతΞχϝʔγϣϯ (withAnimation) • ಛఆͷλΠϛϯάͰΞχϝʔγϣϯ࣮ߦ • ༻ྫɿෳཁૉͷಉظΞχϝʔγϣϯ 3. τϥϯδγϣϯ (.transition) • Ϗϡʔͷදࣔ/ඇදࣔ࣌ͷΞχϝʔγϣϯ • ༻ྫɿը໘ભҠɺཁૉͷग़ݱ/ফࣦ
දతͳΞχϝʔγϣϯ
දతͳΞχϝʔγϣϯ 2. ໌ࣔతΞχϝʔγϣϯ (withAnimation) withAnimationΛͬͨϘλϯϑΟʔυόοΫ ϘλϯΛԡ͢ͱʮॖΜͰΔʯಈ࡞Ͱ ࢹ֮తϑΟʔυόοΫΛఏڙ͠·͢ɻ ʲಈ࡞༰ʳ 1. ϘλϯλοϓͰ90%ʹॖখ
(0.1ඵɺeaseIn) 2. completionޙɺݩαΠζʹ෮ؼ (0.1ඵɺeaseOut) ʲwithAnimationͷಛʳ ✅ ஈ֊తͳΞχϝʔγϣϯ੍ޚ ✅ completionػೳͰ࿈ଓ࣮ߦ ✅ λΠϛϯάͱॱংΛࡉ͔͘ࢦఆՄೳ
දతͳΞχϝʔγϣϯ Ξχϝʔγϣϯ ͳ͠ Ξχϝʔγϣϯ ͋Γ
දతͳΞχϝʔγϣϯ SwiftUIͰΑ͘ΘΕΔجຊతͳΞχϝʔγϣϯख๏ɿ 1. ҉తΞχϝʔγϣϯ (.animation) • Ϗϡʔͷঢ়ଶมԽΛࣗಈͰΞχϝʔγϣϯ • ༻ྫɿϘλϯͷ৭มߋɺαΠζมߋ 2.
໌ࣔతΞχϝʔγϣϯ (withAnimation) • ಛఆͷλΠϛϯάͰΞχϝʔγϣϯ࣮ߦ • ༻ྫɿෳཁૉͷಉظΞχϝʔγϣϯ 3. τϥϯδγϣϯ (.transition) • Ϗϡʔͷදࣔ/ඇදࣔ࣌ͷΞχϝʔγϣϯ • ༻ྫɿը໘ભҠɺཁૉͷग़ݱ/ফࣦ
දతͳΞχϝʔγϣϯ
දతͳΞχϝʔγϣϯ 3. τϥϯδγϣϯ(transition) .transitionΛͬͨϏϡʔͷදࣔɾඇදࣔ ϘλϯΛλοϓ͢Δͱ੨͍ԁ͕ εέʔϧΞχϝʔγϣϯͰొɾୀ͠·͢ɻ ʲಈ࡞༰ʳ 1. ݅ذ (if
showCircle) ʹΑΔදࣔ/ඇදࣔΓସ͑ 2. .transition(.scale)ͰαΠζมԽΞχϝʔγϣϯ 3. withAnimationͰ0.5ඵͷΠʔζΠϯΞτ ʲ.transitionͷಛʳ ✅ Ϗϡʔͷग़ݱɾফࣦʹ͑ΔΞχϝʔγϣϯ ✅ ݅ذʹΑΔදࣔΓସ͑Ͱࣗಈద༻
࣮ࡍʹ࡞ͬͯΈͨʂσϞΞϓϦհ
࣮ࡍʹ࡞ͬͯΈͨʂσϞΞϓϦհ
࣮ࡍʹ࡞ͬͯΈͨʂσϞΞϓϦհ ʮը໘දࣔ࣌ͷ࿈ଓεϥΠυΠϯʯ ɾvisibleItemsͰ֤ΞΠςϜͷදࣔঢ়ଶΛཧ ɾoffsetͰҐஔΛ੍ޚʢը໘֎ → ը໘ʣ ɾdelayͰ0.1ඵͣͭͣΒͯ͠ॱ൪ʹදࣔ ɾSwiftUI͕ࣗಈͰΒ͔ͳΞχϝʔγϣϯΛੜ
࣮ࡍʹ࡞ͬͯΈͨʂσϞΞϓϦհ ʮλοϓ࣌ͷεϜʔζͳঢ়ଶมԽʯ ɾwithAnimationͰғΉ͚ͩͰࣗಈΞχϝʔγϣϯ ɾΞΠίϯมԽɺ৭มԽɺςΩετ০͕࿈ಈ ɾεϓϦϯάΞχϝʔγϣϯͰࣗવͳಈ͖
࣮ࡍʹ࡞ͬͯΈͨʂσϞΞϓϦհ ʮঢ়ଶมԽʹԠͨ͡ݟͨͷࣗಈߋ৽ʯ ɾ݅ذͰݟͨΛΓସ͑ ɾSwiftUI͕ࠩΛݕͯࣗ͠ಈΞχϝʔγϣϯ
·ͱΊ
·ͱΊ ɾSwiftUIͰ؆୯ʹΞχϝʔγϣϯΛಋೖ͢Δ͜ͱ͕Ͱ͖Δ ɾঢ়ଶมԽViewͷΓସ͑ʹԠͨࣗ͡વͳಈ͖Λ࣮ݱ ɾ҉తɾ໌ࣔతΞχϝʔγϣϯɺτϥϯδγϣϯͳͲ͕͋Δ
͝ਗ਼ௌ͍͖ͨͩ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ
ࢀߟࢿྉ ɾhttps://developer.apple.com/jp/videos/play/wwdc2023/10156/ ɾhttps://qiita.com/ichikawa7ss/items/164a2dfd3c3ab2b1eae8