UINavigationBarのカスタマイズ

昨日からずっとUINavigationBarのカスタマイズをしています。
ということで、情報のまとめ。


まず、UINavigationBarの背景に画像を使う方法は
UINavigationBarの背景に画像を使う方法
を参照してUINavigationBarを継承したクラスを作成することで解決できます。
pushNavigationItemやpopNavigationItemAnimatedに処理を入れると
画面遷移の際に実行されるのでかなり便利。


次はUIBarButtonItemのカスタマイズ。
「戻る」ボタンに画像を使いたいなぁ、とか思ったんですが、
これが意外とうまくいかない。


まず画像を貼り付けたUIButtonとかを準備して、
initWithCustomViewを使ってUIBarButtonItemを作ります。
んで、それをbackBarButtonItemにすれば終わりのはずなんですが、
それだと動かないんですよね。


initWithImageで画像を貼り付けたbackBarButtonItemを作ったときは動いたんですが、
これだと画像のみの表示にはなりません。
leftBarButtonItemだとちゃんと動くので、
これにactionを設定して「戻る」ボタンを自分で実装するという手はアリです。


ただ、検索フィールドなんかをUINavigationBarに貼り付けたくなった場合、
UINavigationItemのtitleViewとして設定する必要があるんですが、
titleViewを有効にするためにはleftBarButtonItemをnilにしなければなりません。
backBarButtonItemはtitleViewを有効にしても機能するので、
出来ればそちらを使いたいところ。