web-dev-qa-db-ja.com

UICollectionViewのセクションヘッダーをプログラムで有効/無効にするにはどうすればよいですか?

UICollectionViewのセクションヘッダーをプログラムで有効/無効にするにはどうすればよいですか?

ストーリーボード(チェックボックス)で簡単に行うことができますが、コードで行うのはどうですか?

33
Xyand

UICollectionViewDelegateFlowLayoutの_collectionView:layout:referenceSizeForHeaderInSection:_メソッドを使用してCGSizeMake(0,0)を返すか、それに応じてheaderReferenceSizeUICollectionViewFlowLayoutを設定できます。

Edit:headerReferenceSizeは、実際にはストーリーボードがヘッダーの表示/非表示に使用するプロパティです。 Storyboardファイルから関連する行を追加しました

セクションチェックボックスon

_ <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="xAt-Uo-bMl">
           <size key="headerReferenceSize" width="50" height="50"/></collectionViewFlowLayout>
_

セクションチェックボックス付きoff

_ <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="xAt-Uo-bMl">
           <size key="headerReferenceSize" width="0" height="0"/></collectionViewFlowLayout>
_

#2を編集:

公式ドキュメント から:

フローレイアウトの各セクションには、独自のカスタムヘッダーとフッターを設定できます。ビューのヘッダーまたはフッターを構成するには、ヘッダーまたはフッターのサイズをゼロ以外に構成する必要があります。これを行うには、適切なデリゲートメソッドを実装するか、headerReferenceSizeプロパティとfooterReferenceSizeプロパティに適切な値を割り当てます。ヘッダーまたはフッターのサイズが0の場合、対応するビューはコレクションビューに追加されません。

39
spassas

表示したくないヘッダーの高さを0に変更するだけです...

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
{
    if (section == 0) {
        return CGSizeZero;
    }else {
        return CGSizeMake(collectionView.frame.size.width,50);
    }
}
11
MiMo

Nilも[UIView new]も機能せず、同じエラーがスローされます。最良の答えは ICollectionViewフッタービューの高さをプログラムで変更する方法

2
Hammer