Backporting UICollectionViewCompositionalLayout -kishikawa katsumi
===
{%hackmd FGRWt1UuTFKk0wSbGgg-SA %}
[TOC]
## YouTube
{%youtube 7tCWPKboKM4 %}
## Slide
{%speakerdeck kishikawakatsumi/backporting-collection-view-compositional-layouts %}
{%speakerdeck kishikawakatsumi/w-notes %}
## What is CollectionView Compositional Layouts
- New API Introduced by iOS 13
- Extreamly easy to build
- Powerful feature to beat complex layouts
## What problem does it solve?
### Moderns App UI is Complicated
- Various rich contents
- Various size
- Nested scrolling
### How to Build Custom Collection View Layouts (Old way)
- Subclass UICollectionViewLayout
- Problem:
- Don't know where to start
- No sweat
- Handle complicated like collectionview on collectionview cause difficulty to handle datasource
- Compositional Layout save the world
*"I event think everyone should use Compositional layout", said by Katsumi*
## Anatomy: Compositional Layout
### Layout, Section, Group, Item
- item is smallest unit
- Layout > Section > Group > Item
```Swift
let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1), heightDimension: .fractionalHeight(1))
let item = NSCollectionLayoutItem(layoutSIze: itemSize)
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(0.92), heightDimension: .fractionalHeight(1))
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitems:[items])
let section = NSCollectionSection(group: group)
section.scrolling...
```
** No longer need to implement UICollectionViewFlowLayout
### Compose them into layout
```Swift
```
### Only for iOS 13?
Katsumi has created **IBPCollectionViewCompositionalLayout** for iOS 10, 11, 12
## Backporting
### Drop-in Replacement
## Wrap up
- No .....
* No Documentation with Compositional Layout Objects currently
- [Xcode console] [CompositionalLayout] Attempting to add contentInset ....
## References
[IBPCollectionViewCompositionalLayout](https://github.com/kishikawakatsumi/IBPCollectionViewCompositionalLayout)
[AppStore-Clone-CollectionViewCompositionalLayouts](https://github.com/kishikawakatsumi/AppStore-Clone-CollectionViewCompositionalLayouts)
[Flow Layout](https://developer.apple.com/library/archive/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/UsingtheFlowLayout/UsingtheFlowLayout.html)
###### tags:`iPlayground2019` `keynote`