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
UICollectionView Compositional Layout
Search
USAMI Kosuke
March 07, 2023
Programming
0
850
UICollectionView Compositional Layout
※ Docswell に移行しました
https://www.docswell.com/s/usami-k/Z3894J-uicollectionview-compositional-layout
USAMI Kosuke
March 07, 2023
Tweet
Share
More Decks by USAMI Kosuke
See All by USAMI Kosuke
Onsager代数とその周辺 / Onsager algebra tsudoi
usamik26
0
680
Apple HIG 正式名称クイズ結果発表 / HIG Quiz Result
usamik26
0
230
ゆめみ大技林製作委員会の立ち上げの話 / daigirin project
usamik26
0
370
@ViewLoadingプロパティラッパの紹介と自前で実装する方法 / @ViewLoading property wrapper implementation
usamik26
0
530
これからUICollectionViewを実践活用する人のためのガイド / Guide to UICollectionView
usamik26
1
790
Xcodeとの最近の付き合い方のはなし / Approach To Xcode
usamik26
2
710
Coding Swift with Visual Studio Code and Docker
usamik26
0
550
Swift Extension for Visual Studio Code
usamik26
2
1.1k
ソリトンとリー代数 / soliton history
usamik26
0
960
Other Decks in Programming
See All in Programming
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
120
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
2
180
文字コードの話
qnighy
43
17k
DSPy入門 Pythonで実現する自動プロンプト最適化 〜人手によるプロンプト調整からの卒業〜
seaturt1e
1
470
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
180
米国のサイバーセキュリティタイムラインと見る Goの暗号パッケージの進化
tomtwinkle
1
380
Go1.26 go fixをプロダクトに適用して困ったこと
kurakura0916
0
320
Head of Engineeringが現場で回した生産性向上施策 2025→2026
gessy0129
0
210
RubyとGoでゼロから作る証券システム: 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル
free_world21
0
180
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.3k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
370
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
150
Featured
See All Featured
The Curse of the Amulet
leimatthew05
1
9.4k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
860
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
140
We Have a Design System, Now What?
morganepeng
55
8k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
170
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
170
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.7k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
360
The Mindset for Success: Future Career Progression
greggifford
PRO
0
270
So, you think you're a good person
axbom
PRO
2
1.9k
How to Talk to Developers About Accessibility
jct
2
140
What's in a price? How to price your products and services
michaelherold
247
13k
Transcript
UICollectionView Compositional Layout 振り返り 宇佐見公輔 / 株式会社ゆめみ 2023-03-07 UICollectionView Compositional
Layout 振り返り 1
自己紹介 宇佐見公輔(うさみこうすけ) 株式会社ゆめみ / iOSテックリード 大阪在住 UICollectionView Compositional Layout 振り返り
2
UICollectionView iOS 6 で登場した iOS 13 / 14 で大きく進化した Diffable
Data Source Compositional Layout UICollectionView Compositional Layout 振り返り 3
API構成 Data Layout Presentation UICollectionView Compositional 4
Layout Layout クラス(抽象クラス) UICollectionViewLayout Flow Layout : iOS 6〜 UICollectionViewFlowLayout
Compositional Layout : iOS 13〜 UICollectionViewCompositionalLayout UICollectionView Compositional Layout 振り返り 5
Compositional Layout でできること UICollectionView Compositional Layout 振り返り 6
Compositional Layout の構成 Layout Section Group Item UICollectionView Compositional Layout
振り返り 7
Layout ひとつのセクションにひとつの Section が対応する let layout = UICollectionViewCompositionalLayout { (sectionIndex,
layoutEnvironment) -> NSCollectionLayoutSection? in let section = NSCollectionLayoutSection(...) return section } ※ 全部同じ Section の場合は簡単な init もある let layout = UICollectionViewCompositionalLayout(section: section) UICollectionView Compositional Layout 振り返り 8
Section ひとつの Group を持つ let section = NSCollectionLayoutSection(group: group) ただし、Group
はネストできる let subgroups: [NSCollectionLayoutGroup] = ... let group = NSCollectionLayoutGroup.vertical( layoutSize: ..., subitems: subgroups ) let section = NSCollectionLayoutSection(group: group) UICollectionView Compositional Layout 振り返り 9
Group ひとつまたは複数個の Item を持つ let group = NSCollectionLayoutGroup.vertical( layoutSize: ...,
subitems: items ) let group = NSCollectionLayoutGroup.horizontal( layoutSize: ..., subitems: items ) UICollectionView Compositional Layout 振り返り 10
Item ひとつのデータに対応する let item = NSCollectionLayoutItem(layoutSize: ...) UICollectionView Compositional Layout
振り返り 11
それぞれの関係まとめ Layout はセクションごとに Section を持つ Section はひとつの Group を持つ(Group のネスト可能)
Group はひとつまたは複数個の Item を持つ Item はひとつのデータに対応する UICollectionView Compositional Layout 振り返り 12
Section / Group 「いくつかのものを並べる」 のはどちらも同じ どんなかたまりを Section に したらいいのか? どんなかたまりを
Group に したらいいのか? UICollectionView Compositional Layout 振り返り 13
Section と Group の違い Section Section 単位で設定する機能がある ネストできない Group Group
単位の機能はなく、レイアウト定義用のもの ネストできる UICollectionView Compositional Layout 振り返り 14
Section の機能 (1) Sticky Header pinToVisibleBounds セクションが変わると Pinned にな っていたヘッダーが消えてしまう
そのため、セクションの範囲を考慮 する必要がある UICollectionView Compositional Layout 振り返り 15
Section の機能 (2) 横スクロール orthogonalScrollingBehavior これはセクションのプロパティ 横スクロールしたい部分だけでセク ションにする必要がある UICollectionView Compositional
Layout 振り返り 16
Section の範囲を考える Section はネストできない そのため、セクションわけは実現したい機能に応じて決める必要が ある UICollectionView Compositional Layout 振り返り
17
ふたつの機能が両立 しないケース Sticky Header を右のような単位で つけたいとする すると、上部分の横スクロールを orthogonalScrollingBehavior では 実現できなくなる
UICollectionView Compositional Layout 振り返り 18
まとめ Section と Group はグルーピングの構造だが、役割が違う セクション単位で UI の機能を意識する必要がある 感想・ツッコミ・指摘・アドバイスなど歓迎します。 Sticky
Header と横スクロールを両立する方法が知りたい CollectionView in CollectionView か? UICollectionView Compositional Layout 振り返り 19