web-dev-qa-db-ja.com

UICollectionViewのセクション全体の背景色を変更するにはどうすればよいですか?

UICollectionViewでは、単一のセルやコレクションビュー全体ではなく、セクション全体に均一な背景色を与えたいと思います。

そのためのデリゲートメソッドはありません。何か提案はありますか?

31
lichen19853

UICollectionViewLayoutAttributesをオーバーライドしてカラー属性を追加するのが目的です。次に、オーバーライドUICollectionReusableViewを使用して、ビューの背景に色を適用します。

https://github.com/strawberrycode/SCSectionBackground

4
dangthaison.91

これは、UICollectionViewセクションの色を変更するための優れたチュートリアルです。

ユーザー@casamiaのおかげでリンクを更新

http://www.ericjchapman.com/jekyll/update/ios/2014/11/10/ios-changing-section-background-color-in-UICollectionView.html

基本的に、インスタンスのUICollectionReusableViewをセクションの背景ビューとして作成するには、UICollectionViewLayoutAttributesUICollectionReusableView、およびUICollectionViewLayoutをサブクラス化する必要があります。

これは彼の結果です:

enter image description here

詳しくはリンク先をご覧ください。

3
FlySoFast

私はまだこれを試していませんが、セルの背後に背景が必要な場合(ブックスアプリの棚など)、装飾ビューを使用する必要があるようです。セクションごとに異なるビューを用意し、デリゲートメソッドlayoutAttributesForDecorationViewOfKind:atIndexPath:を使用してビューを設定できるはずです。

2
rdelmar

非常にシンプルで、このデフォルトの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

}
0
Harie venad

参照する:
strawberrycode:背景として装飾ビューを使用
devxoul:SupplementaryElementを背景として使用
airbnb:背景としてSupplementaryElementを使用

IGListKitとの互換性が必要なので、decorationViewをバックグラウンドとして使用します。レイアウトは、一般的な使用例ではUICollectionViewFlowLayoutのサブクラスです。 私の実装different section background

0
Jules

コレクションビューでは、すべてのセクションに補足ビューを設定できるため、セクションごとに補足ビューを配置し、セクションセルではなく補足ビューに背景色を設定します。お役に立てば幸いです。

0
Jirune