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`