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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
riataso
June 27, 2025
Programming
0
13
SwiftUIのアニメーション_ちょっと触ってみた話
riataso
June 27, 2025
Tweet
Share
More Decks by riataso
See All by riataso
現在地から始まる物語:位置情報アプリ開発の冒険
riataso_kebin
1
54
Other Decks in Programming
See All in Programming
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
270
Gemini for developers
meteatamel
0
100
組織で育むオブザーバビリティ
ryota_hnk
0
180
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
260
MUSUBIXとは
nahisaho
0
140
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
470
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
230
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
AI & Enginnering
codelynx
0
120
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Facilitating Awesome Meetings
lara
57
6.8k
From π to Pie charts
rasagy
0
130
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Mind Mapping
helmedeiros
PRO
0
90
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Optimizing for Happiness
mojombo
379
71k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
440
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