ナビゲーションバーの背景画像に関して

ナビゲーションバーの背景画像ですが、実は、独自の画像ファイルを使えます。
それですねIOS5以降のやり方を記載します。
IOS5とIOS6は、このやり方で大丈夫なんですが、IOS4だと、やり方が違います。
多分、IOS4はもう対応しなくとも大丈夫...だろう。
やり方は、UINavigationBarのBackgroundImageに画像を設定するだけです。
今回は、下の画像を作ったので、それをナビゲーションバーの背景画像にします。

20120921005553

それとですねSDKに標準に組み込まれてるQuartzCoreと言うフレームワークを使います。
まずは、UIViewControllerのインターフェイス定義です。
QuartzCoreをインポートします。

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
@interface RootViewController : UIViewController
@end

次に実装部分ですが、viewDidLoadメソッドに下記の定義を追加します。

 - (void)viewDidLoad
{
    [super viewDidLoad];
    self.navigationItem.title = @"ToDoリスト";
    UIImage *image =
        [[UIImage imageNamed:@"sample.png"]
         stretchableImageWithLeftCapWidth:0 topCapHeight:1];
    UIImageView *imageView =
        [[UIImageView alloc] initWithImage:image];
    imageView.frame = self.navigationController.navigationBar.bounds;
    imageView.autoresizingMask =
        (UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight);
    imageView.layer.zPosition = -FLT_MAX;
    [self.navigationController.navigationBar setBackgroundImage:image
     forBarMetrics:UIBarMetricsDefault];
}

やってることは、簡単で、UIImageとUIImageViewをサイズ調整とか、
ナビゲーションバーのサイズとか引っ張ってきて、全体的な調整したりした後に、
UINavigationBarのBackgroundImageに設定しているだけです。
これを動かすとナビゲーションバーは、下見たなイメージで表示されます。

20120921005552