iOS6で出現するUINavigationBarのドロップシャドウを消す

ORANGE DAYSiPhone 5 & iOS 6対応していて気がついたのですが、UINavigationBarにはドロップシャドウがデフォルトで追加されるようになっているようです。

(もしかしたら旧バージョンでもあったのかもしれないけれど、ORANGE DAYSのようにUINavigationBarの背景を画像などで変更している場合は表示されていませんでした)

 

つまりこんな感じ。

f:id:penpen-0704:20121005162746p:plain

 

ORANGE DAYSのような平面的なデザインにドロップシャドウは要らないので、消す方法ないかなーと探してみたところ、Class ReferenceによるとiOS 6からshadowImageという新しいプロパティが追加されたとのこと。shadowImageはその名の通りUIImageなので、以下のように640x1の画像(ここではclear.png)を予め用意しといてそれを上書きすることで対応しました。

 

UINavigationBar *navigationBar = (UINavigationBar*)self.navigationController.navigationBar;

navigationBar.shadowImage = [UIImage imageNamed:@"clear.png"];

 

もしかしたらもっとスマートな方法あるかもしれないけれど、とりあえずこれで解決したので良しとしておこうかな。