*

UICollectionViewのヘッダとフッタの設定

公開日: : Tips , ,

UICollectionViewで慣れないのがヘッダフッタで、毎度「どうやって設定するんだっけ…」と悩むので、備忘録を兼ねて記事を書いておこうと思います。

UITableViewと違う

NumberOf〜系統のメソッドが大体同じ感じなのでheader〜とかfooter〜とかいうメソッドがあるのかと思うと不意打ち食らうというか、これらはSupplementaryElement(サプリメント:補助的)として扱われています。
なので、[collectionView:viewForSupplementaryElementOfKind:atIndexPath:]というメソッドで対応するビューを引っ張ります。
クラスはUICollectionReuseableViewというクラスで、IBで作る場合は専用のタイトルセル(UICollectionViewCellの隣にある、Collectionの横長の棒がハイライトされているアイコン)をIBに入れて作ることができます。
IB使って実際にやるなら、派生クラスを作ってIBOutletをゴリゴリ割り当てておくと、メソッド内のデータの設定が楽になるかと思います。

- (UICollectionReusableView*)collectionView:(UICollectionView *)collectionView
           viewForSupplementaryElementOfKind:(NSString *)kind
                                 atIndexPath:(NSIndexPath *)indexPath {
    // セクションヘッダ・フッタを引っ張ってくる
    UICollectionReusableView* reusableview = nil;
    
    if (kind == UICollectionElementKindSectionHeader) {
        // --- ヘッダ
        UICollectionReusableView* headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader
                                                                                  withReuseIdentifier:@"HeaderView"
                                                                                         forIndexPath:indexPath];
        //(ここにheaderViewの中身の定義をindexPath.sectionなんかをベースに設定してやる)
        reusableview = headerView;
    } else if (kind == UICollectionElementKindSectionFooter) {
        // --- フッタ
        UICollectionReusableView* footerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader
                                                                                  withReuseIdentifier:@"FooterView"
                                                                                         forIndexPath:indexPath];
        //(ここにfooterViewの中身の定義をindexPath.sectionなんかをベースに設定してやる)
        reusableview = footerView;
    }
    
    return reusableview;
}

参考サイト

How to Add Header and Footer View in UICollectionView

関連記事

iPadのUIModalPresentationFormSheetでキーボードが閉じない

iPadでUIModalPresentationFormSheet(全画面ではなく、中央にフロートし

記事を読む

iPad用storyboard⇔iPhone用Storyboardへの変換

iPad用アプリとしてiPad用前提のstoryboardから、iPhone対応にするにあたり、si

記事を読む

UILabelの改行をInterfaceBuilderから入力する

UILabelの行数は任意に設定できて、「0」を指定すると行数を限定しないで(UILabelのbou

記事を読む

UIActionSheetが消えるときにキーボード表示/非表示通知が来る

 UITextViewやUITextField編集中にアクションシートを表示すると、アクションシート

記事を読む

CoreDataのソートとsectionNameKeyPathの関係

CoreDataをフェッチするときに、indexPathのsectionにできるsectionNam

記事を読む

UICollectionViewが画面回転した時にレイアウトが崩れた時の対応

UICollectionViewCellのサイズを、内容に合わせて動的に変えた時に起こる問題に関して

記事を読む

User Defined Runtime Attributeについての覚書

UILabelに上下左右のパディングをつける方法を探して、結局「自分で以下のようなメソッドを持った拡

記事を読む

コードでiPhone6 Plusを識別する簡単な方法

表題の通り、コードでiPhone6 Plusを識別する簡単な方法です。 iPhone6 Plu

記事を読む

iOS7の青色

iOS7の標準UIで使われている、水色に近い青の色についての記事です。 あの色には特に名前を決まっ

記事を読む

ヒラギノ角ゴを使う

小ネタですが存外調べるのが面倒だった項目なので覚書しておきます。 ヒラギノ角ゴシック体を使うた

記事を読む

Xcode10からのimage literal / color literalの指定方法

アセットにあるUIImageの直接指定が可能なImage litera

Xcode11でのバージョン番号の取得方法

Xcode11になってバージョン番号をスクリプトから得て自動で更新する

GoogleスプレッドシートからCSVにエクスポートしたデータを得る方法

情報がない中さんざ苦労しましたが、Googleスプレッドシート(の最初

画面回転をしたあとに、UITextViewの先頭を表示する

回転によりサイズが可変するUITextViewで、縦向き(ポートレイト

NXDrawKitを導入してみる

ACEDrawingViewがObj-Cで書かれていて、いまいちメンテ

→もっと見る

    PAGE TOP ↑