iOS5でのUINavigationBarの背景画像処理
[navibar.png]
よく利用していたパターン2つを参考としてあげます。【NavigationBarカテゴリでdrawRect】
ですが、これらの方法はiOS5以降では使用できなくなっています。
iOS5だと変化なし
iOS5以降のUINavigationBarには
- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics
メソッドが用意されており、Viewの構成が変わったようです。
なので、iOS5以降では上記のパターンは以下のように修正しておく必要があります。【NavigationBarカテゴリでdrawRect】
UINavigationBar (UINavigationBarCategory) は残しつつ以下処理を追加
では、今回はこの辺りで。
よく利用していたパターン2つを参考としてあげます。
@implementation UINavigationBar (UINavigationBarCategory) - (void)drawRect:(CGRect)rect { UIImage *image = [UIImage imageNamed:@"navibar.png"]; [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; } @end
【NavigationBarにinsertSubview】
#import <QuartzCore/QuartzCore.h> .. .. UIImage *image = [UIImage imageNamed:@"navibar.png"]; UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; imageView.frame = self.navigationController.navigationBar.bounds; imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); imageView.layer.zPosition = -FLT_MAX; [self.navigationController.navigationBar insertSubview:imageView atIndex:0];
ですが、これらの方法はiOS5以降では使用できなくなっています。
iOS5だと変化なし
iOS5以降のUINavigationBarには
- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics
メソッドが用意されており、Viewの構成が変わったようです。
なので、iOS5以降では上記のパターンは以下のように修正しておく必要があります。
UINavigationBar (UINavigationBarCategory) は残しつつ以下処理を追加
// iOS 5用 メソッドの有無で確認 if([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) { [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; }
【NavigationBarにinsertSubview】
if文で振り分け
#import <QuartzCore/QuartzCore.h> .. .. UIImage *image = [UIImage imageNamed:@"navibar.png"]; // iOS 5用 メソッドの有無で確認 if([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) { [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; } // iOS 4.3以前 else { UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; imageView.frame = self.navigationController.navigationBar.bounds; imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); imageView.layer.zPosition = -FLT_MAX; [self.navigationController.navigationBar insertSubview:imageView atIndex:0]; }
では、今回はこの辺りで。
Shareしていただけると励みになりますので
良ければよろしくお願いします
良ければよろしくお願いします