iOS5以降およびiOS5未満のiOSのUinavigationbar背景画像を設定するにはさまざまな方法があります
iOS 5の場合、アプリデリゲートで以下のコードを使用できます
//Customize the look of the UINavBar for iOS5 devices
UIImage *gradientImage44 = [[UIImage imageNamed:@"navigationBar44"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
UIImage *gradientImage32 = [[UIImage imageNamed:@"navigationBar32"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UINavigationBar appearance] setBackgroundImage:gradientImage44
forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:gradientImage32
forBarMetrics:UIBarMetricsLandscapePhone];
ただし、iOS 5未満のiOSバージョンを使用している場合は、UINavigationControlをサブクラス化し、drawRectを次のようにオーバーロードする必要があります。
@interface CustomNavigationBar : UINavigationBar
@end
@implementation CustomNavigationBar
-(void) drawRect:(CGRect)rect
{
UIImage *image = [UIImage imageNamed: @"myNavBarImage"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
// this can go anywhere
+(UINavigationController*) myCustomNavigationController
{
YOurViewController *vc = [[[YOurViewController alloc] init] autorelease];
UINavigationController *nav = [[[NSBundle mainBundle]
loadNibNamed:@"CustomNavigationController" owner:self options:nil] objectAtIndex:0];
nav.viewControllers = [NSArray arrayWithObject:vc];
return nav;
}
このように、ナビゲーションバーをカスタマイズでき、すべてのiOSバージョンで有効になります。
を使用してiOS5のチェックを入れることができます
if ([[UINavigationBar class]respondsToSelector:@selector(appearance)]) {
///ios 5 and above.
}