Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SwiftUIのアニメーション_ちょっと触ってみた話
Search
riataso
June 27, 2025
Programming
0
12
SwiftUIのアニメーション_ちょっと触ってみた話
riataso
June 27, 2025
Tweet
Share
More Decks by riataso
See All by riataso
現在地から始まる物語:位置情報アプリ開発の冒険
riataso_kebin
1
48
Other Decks in Programming
See All in Programming
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
110
dotfiles 式年遷宮 令和最新版
masawada
1
550
分散DBって何者なんだ... Spannerから学ぶRDBとの違い
iwashi623
0
160
20 years of Symfony, what's next?
fabpot
2
300
Integrating WordPress and Symfony
alexandresalome
0
110
[堅牢.py #1] テストを書かない研究者に送る、最初にテストを書く実験コード入門 / Let's start your ML project by writing tests
shunk031
11
6.6k
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
300
ローターアクトEクラブ アメリカンナイト:川端 柚菜 氏(Japan O.K. ローターアクトEクラブ 会長):2720 Japan O.K. ロータリーEクラブ2025年12月1日卓話
2720japanoke
0
360
ID管理機能開発の裏側 高速にSaaS連携を実現したチームのAI活用編
atzzcokek
0
170
FluorTracer / RayTracingCamp11
kugimasa
0
170
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
4
1.8k
スタートアップを支える技術戦略と組織づくり
pospome
8
14k
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Rails Girls Zürich Keynote
gr2m
95
14k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Visualization
eitanlees
150
16k
4 Signs Your Business is Dying
shpigford
186
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Building an army of robots
kneath
306
46k
Writing Fast Ruby
sferik
630
62k
Context Engineering - Making Every Token Count
addyosmani
9
450
A better future with KSS
kneath
240
18k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
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