UICollectionViewでは、単一のセルやコレクションビュー全体ではなく、セクション全体に均一な背景色を与えたいと思います。
そのためのデリゲートメソッドはありません。何か提案はありますか?
UICollectionViewLayoutAttributesをオーバーライドしてカラー属性を追加するのが目的です。次に、オーバーライドUICollectionReusableViewを使用して、ビューの背景に色を適用します。
これは、UICollectionViewセクションの色を変更するための優れたチュートリアルです。
基本的に、インスタンスのUICollectionReusableViewをセクションの背景ビューとして作成するには、UICollectionViewLayoutAttributes
、UICollectionReusableView
、およびUICollectionViewLayout
をサブクラス化する必要があります。
これは彼の結果です:
詳しくはリンク先をご覧ください。
私はまだこれを試していませんが、セルの背後に背景が必要な場合(ブックスアプリの棚など)、装飾ビューを使用する必要があるようです。セクションごとに異なるビューを用意し、デリゲートメソッドlayoutAttributesForDecorationViewOfKind:atIndexPath:
を使用してビューを設定できるはずです。
非常にシンプルで、このデフォルトのUICollectionViewDelegateのメソッドを使用するだけで機能します
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
print(indexPath.item)
let evenSectionColor = UIColor.clear
let oddSectionColor = UIColor.white
cell.contentView.backgroundColor = (indexPath.item % 2 == 0) ? evenSectionColor : oddSectionColor
}
参照する:
strawberrycode:背景として装飾ビューを使用
devxoul:SupplementaryElementを背景として使用
airbnb:背景としてSupplementaryElementを使用
IGListKit
との互換性が必要なので、decorationView
をバックグラウンドとして使用します。レイアウトは、一般的な使用例ではUICollectionViewFlowLayout
のサブクラスです。 私の実装 :
コレクションビューでは、すべてのセクションに補足ビューを設定できるため、セクションごとに補足ビューを配置し、セクションセルではなく補足ビューに背景色を設定します。お役に立てば幸いです。