UICollectionViewのセクションヘッダーをプログラムで有効/無効にするにはどうすればよいですか?
ストーリーボード(チェックボックス)で簡単に行うことができますが、コードで行うのはどうですか?
UICollectionViewDelegateFlowLayout
の_collectionView:layout:referenceSizeForHeaderInSection:
_メソッドを使用してCGSizeMake(0,0)
を返すか、それに応じてheaderReferenceSize
のUICollectionViewFlowLayout
を設定できます。
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の場合、対応するビューはコレクションビューに追加されません。
表示したくないヘッダーの高さを0に変更するだけです...
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
{
if (section == 0) {
return CGSizeZero;
}else {
return CGSizeMake(collectionView.frame.size.width,50);
}
}
Nilも[UIView new]も機能せず、同じエラーがスローされます。最良の答えは ICollectionViewフッタービューの高さをプログラムで変更する方法