What's new in UICollectionView

What's new in UICollectionView

3d0e347c8f54ae240a416ba5f0c4ba72?s=128

Masaki Haga

June 13, 2019
Tweet

Transcript

  1. 5.

    Data Source - [Old] UICollectionViewDataSource - reloadData() or performBatchUpdate(:_completion:) -

    UICollectionViewDiffableDataSource & NSDiffableDataSourceSnapshot - apply() - collectionViewへの差分反映はFramework側でhandleしてもらえるようになった。
  2. 9.

    こんなかんじ struct VideoCollection: Hashable { var title: String let videos:

    [Video] let identifier = UUID() func hash(into hasher: inout Hasher) { hasher.combine(identifier) } }
  3. 12.

    New API - BidrectionalColleciton: difference(from:) - Swift Standard Library: CollectionDifference

    - Foundation: NSOrderedCollectionDifference - _CollectionChanges
  4. 13.

    Layout - [Old] UICollectionViewFlowLayout + UICollectionViewDelegateFlowLayout - New APIs -

    UICollectionViewCompositionalLayout - NSCollectionLayoutSection - NSCollectionLayoutGroup - NSCollectionLayoutItem - NSCollectionLayoutSize - Section > Group > Item
  5. 15.

    新しいLayoutの宣言 - UICollectionViewCompositionalLayout - initの引数として、NSCollectionLayoutSectionか、SectionProviderというClosureを渡す。 public typealias UICollectionViewCompositionalLayoutSectionProvider = (Int,

    NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection? NSCollectionLayoutEnvironmentというので親CollectionViewの情報(ContentSize等)をとってくることができ る。SwiftUIでもGemetryReaderというのがあって、同じアプローチをとっているところが面白い。
  6. 17.

    Nested Collection View 縦スクロールの中の横スクロールが簡単に書けるようになった。 let section = NSCollectionLayoutSection(group: group) section.orthogonalScrollingBehavior

    = .continuous UIKit側で_UICollectionViewOrthogonalScrollerEmbeddedScrollView的な ScrollViewを勝手にいれてくれる。 画面外から戻ってきてももとのContentOffsetが保存されている。