UICollectionViewのスクロールバーがセクションヘッダに隠れないようにする

環境

iOS12.0
Xcode Version 10.0 (10A255)
Swift4.2

問題

UICollectionViewのセクションヘッダを表示する必要があって、実装してみたらスクロールバーがセクションヘッダの下に隠れてしまったのでなんとかしたかった。

f:id:y_sumida:20181219224848p:plain

解決策

UICollectionViewDelegateの collectionView(_:willDisplaySupplementaryView:forElementKind:at:) で zPosition を指定することで解消できた。

extension ViewController: UICollectionViewDelegate {
    func collectionView(_ collectionView: UICollectionView, willDisplaySupplementaryView view: UICollectionReusableView, forElementKind elementKind: String, at indexPath: IndexPath) {
        view.layer.zPosition = 0.0
    }
}

f:id:y_sumida:20181219224917p:plain

リポジトリ

GitHub - y-sumida/UICollectionViewHeaderFooterSample: UICollectionViewにヘッダ・フッタを表示する

慣れてないのもあるけど、UITableViewに比べてUICollectionViewは癖が強い気がする。

参考

collectionView(_:willDisplaySupplementaryView:forElementKind:at:) - UICollectionViewDelegate | Apple Developer Documentation