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におけるPreferenceの基礎概念
Search
Kota Minato
May 21, 2025
Technology
0
25
SwiftUIにおけるPreferenceの基礎概念
Kota Minato
May 21, 2025
Tweet
Share
Other Decks in Technology
See All in Technology
OpenTelemetry Collector internals
ymotongpoo
4
490
Grafana MCP serverでなんかし隊 / Try Grafana MCP server
kohbis
0
290
Nonaka Sensei
kawaguti
PRO
3
530
Digitization部 紹介資料
sansan33
PRO
1
4.1k
組織とセキュリティ文化と、自分の一歩
maimyyym
3
1.4k
Introduction to Bill One Development Engineer
sansan33
PRO
0
250
JavaのMCPサーバーで体験するAIエージェントの世界
tatsuya1bm
1
220
Ретроспективный взгляд на Vue 3. Даша Сабурова, Vue-разработчик Lamoda Tech
lamodatech
0
200
メルカリにおけるデータアナリティクス AI エージェント「Socrates」と ADK 活用事例
na0
15
8.4k
Whats_new_in_Podman_and_CRI-O_2025-06
orimanabu
3
160
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.6k
医療業界に特化した音声認識モデル構築のためのアノテーションの実態
thickstem
0
520
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
16
910
Side Projects
sachag
454
42k
Balancing Empowerment & Direction
lara
1
160
Measuring & Analyzing Core Web Vitals
bluesmoon
7
470
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
870
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
Facilitating Awesome Meetings
lara
54
6.4k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
640
Six Lessons from altMBA
skipperchong
28
3.8k
The Invisible Side of Design
smashingmag
299
50k
GitHub's CSS Performance
jonrohan
1031
460k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Transcript
© 2025 Wantedly, Inc. SwiftUIにおける Preferenceの基礎概念 Mobile勉強会#20 ウォンテッドリー×チームラボ×Sansan May.21 2025
- kota minato
© 2025 Wantedly, Inc. 自己紹介
© 2025 Wantedly, Inc. 話すこと 01 Preferenceとはなにか ? 02 Binding
vs Environment vs Preference 03 Wantedlyでの活用事例
© 2025 Wantedly, Inc. 話すこと 01 Preferenceとはなにか ? 02 Binding
vs Environment vs Preference 03 Wantedlyでの活用事例
© 2025 Wantedly, Inc. Preferenceとはなにか? ずばり、SwiftUIにおいて、子Viewから親Viewへ値を伝達する仕組み 通常データは親Viewから子Viewへ流れるがPreferenceを用いると子Viewから親Viewへの一方通行 のデータの受け渡しが可能になる
© 2025 Wantedly, Inc. どういったときにPreferenceを使うのか? レイアウト情報やサイズ情報を親Viewに 伝える必要がある場合に有用 もっと具体的には ? ScrollView内の子Viewの位置を取得し、親Viewで制御し
たい場合など
© 2025 Wantedly, Inc. 話すこと 01 Preferenceとはなにか ? 02 Binding
vs Environment vs Preference 03 Wantedlyでの活用事例
© 2025 Wantedly, Inc. Binding vs Environment vs Preference Binding、Environment、Preferenceを比較してみる
@Environmentは上位View→下位Viewへの一方向の値注入 (広い範囲で共通の値を共有 ) @Bindingは親View→子Viewへの双方向の値注入 (データの保有者は親 View) Preferenceは子View→親Viewへの一方向の値注入 データの矢印の向きが異なります!
© 2025 Wantedly, Inc. 話すこと 01 Preferenceとはなにか ? 02 Binding
vs Environment vs Preference 03 Wantedlyでの活用事例
© 2025 Wantedly, Inc. Wantedlyでの活用事例 下スクロールを検知でボタンを非表示にしてほしい!
© 2025 Wantedly, Inc. Wantedlyでの活用事例 実装方針は子Viewのスクロールを検知して親 Viewでボタン を非表示にする処理を行おう! でもどうやって子Viewから親Viewに通知しよう☹ 画面構成としては親Viewの中に子Viewが入っている!
© 2025 Wantedly, Inc. Wantedlyでの活用事例 Preference
© 2025 Wantedly, Inc. どうやって実装するのか PreferencesKeyに準拠したstructを作成 • PreferencesKeyに準拠するために必要なのはdefaultValue とreduce。 •
defaultValue = 何も入れなかったときの値 • reduce = 子Viewが入れた値を親Viewが受け取るときの変 換処理を書く 今回はOffSetを常に更新して取得したかったので Valueに対してnextValueを加算していま す。
© 2025 Wantedly, Inc. どうやって実装するのか • .preference(key: ScrollOffset.self, value: 値
) 子Viewから親Viewへ値を流す ※ 画面に影響を与えないようにColor.Clearを使用して値を取得します
© 2025 Wantedly, Inc. どうやって実装するのか 親Viewで値を受け取る ボタン非表示アニメーションを追加 (詳細は割愛) • .onPreferenceChange(ScrollOffset.self
) {}
© 2025 Wantedly, Inc. Wantedlyでの活用事例 うまくできた🎉
© 2025 Wantedly, Inc. まとめ • PreferenceはViewの子から親に値を渡す仕組み • PreferenceKeyを実装することによって子 View側で値を入れ親側で
.onPreferenceChengeで受け取 ることができる
© 2025 Wantedly, Inc. ご清聴ありがとうございまし た!