UICollectionViewのヘッダとフッタの設定
公開日:
:
Tips InterfaceBuilder, UICollectionView, Xcode
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;
}
参考サイト
関連記事
-
-
アプリ内で自動スリープの設定を無効化する
「設定」アプリ内で設定したスリープ時間設定を無効にするためのコード。 アプリがバックグラウンドにな
-
-
iOS7でカメラ撮影時のステータスバーを消す
UIImagePickerControllerをカメラモードで表示するとステータスバーがカメラの一番
-
-
iPad用storyboard⇔iPhone用Storyboardへの変換
iPad用アプリとしてiPad用前提のstoryboardから、iPhone対応にするにあたり、si
-
-
UILabelの改行をInterfaceBuilderから入力する
UILabelの行数は任意に設定できて、「0」を指定すると行数を限定しないで(UILabelのbou
-
-
GoogleスプレッドシートからCSVにエクスポートしたデータを得る方法
情報がない中さんざ苦労しましたが、Googleスプレッドシート(の最初のシート)をCSVとしてエクス
-
-
UIActionSheetが消えるときにキーボード表示/非表示通知が来る
UITextViewやUITextField編集中にアクションシートを表示すると、アクションシート
-
-
Size ClassとUIViewController.view
タイトルの件でちょっとハマったことがある上に、特に日本語情報もStackOverflowからも情報が
-
-
App Storeのページにアプリケーションから直接アクセスする方法
去年(2013年)の秋ごろ、iOS7の出始めの時期に書かれたblog記事などを参考にすると、iOS6
-
-
viewDidLoadとviewDidLayoutSubviewsのタイミング
真実の記事にある「コードでiPhone6を識別する」話とほんのちょっとだけ繋がっている話で、view
