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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
riataso
June 27, 2025
Programming
0
17
SwiftUIのアニメーション_ちょっと触ってみた話
riataso
June 27, 2025
Tweet
Share
More Decks by riataso
See All by riataso
現在地から始まる物語:位置情報アプリ開発の冒険
riataso_kebin
1
55
Other Decks in Programming
See All in Programming
ファインチューニングせずメインコンペを解く方法
pokutuna
0
190
AI 開発合宿を通して得た学び
niftycorp
PRO
0
170
実践ハーネスエンジニアリング #MOSHTech
kajitack
7
4.2k
Claude Codeログ基盤の構築
giginet
PRO
7
3.7k
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
1.1k
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
420
脱 雰囲気実装!AgentCoreを良い感じにWEBアプリケーションに組み込むために
takuyay0ne
3
400
Angular-Apps smarter machen mit Gen AI: Lokal und offlinefähig - Hands-on Workshop!
christianliebel
PRO
0
140
Strategy for Finding a Problem for OSS: With Real Examples
kibitan
0
110
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
250
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun9
0
310
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
270
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
A better future with KSS
kneath
240
18k
Building AI with AI
inesmontani
PRO
1
820
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Designing for Timeless Needs
cassininazir
0
170
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
460
Color Theory Basics | Prateek | Gurzu
gurzu
0
260
Raft: Consensus for Rubyists
vanstee
141
7.4k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
300
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