Swift UICollectionView Compositional LayoutでSection内のスクロールを有効にする

Swift Swift
Swift

SwiftでiOSアプリを開発している環境。
スクロールするViewを作成するために、UICollectionViewを使用しますが、CompositionalLayoutを使用し、Sectionを設定した状態で、Section内スクロールを有効にする方法。

例えば、ScrollView自体は縦にスクロールできる状態だが、Section内の要素は増えると横にスクロールできる状態にしたい・・・などの時。

実際のコード

let itemSize = NSCollectionLayoutSize(widthDimension: .absolute(240), heightDimension: .estimated(40))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
        
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(40))
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitems: [item])
        
let section = NSCollectionLayoutSection(group: group)

section.orthogonalScrollingBehavior = .continuous

section.orthogonalScrollingBehavior = .continuous

この指定を行う事で、スクロールされるようになります。
超簡単ですね:D

設定できる値

orthogonalScrollingBehaviorの値を変えると、スクロールの動作が変わります。

case none = 0
case continuous = 1
case continuousGroupLeadingBoundary = 2
case paging = 3
case groupPaging = 4
case groupPagingCentered = 5

enumでこのような候補が確認できます。

none=スクロールしない
continuous=スクロールする(普通のスクロール)
continuousGroupLeadingBoundary=スクロールする(グループ単位でスクロールし、境界の場所で停止する)
paging=スクロールする(グループ単位でスクロールし、要素に対して一定量スクロールしたら次の要素にスクロールされる。バウンスの動作)
groupPaging=スクロールする(グループ単位でスクロール。pagingと同じような動作。違うのはグループのサイズによって変わるバウンスの動作)
groupPagingCentered=スクロールする(グループ単位でスクロール。pagingと同じような動作。違うのは先頭と末尾にinsetsを追加し、センタリングさせるようの指定)

group○○系は説明するのが難しい・・・

コメント

タイトルとURLをコピーしました