2

私のアプリにはいくつかのビューコントローラーがあり、それらのいくつかについては、ナビゲーションスタックにプッシュされるときに別のナビゲーションバーの背景画像を使用したいと考えています。

たとえば、mainViewController が読み込まれると、次のようになります。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    NSLog(@"Setting toolbar for iOS 5+");
    UIImage * navbarImage = [UIImage imageNamed:@"navbar01.png"];
    [[UINavigationBar appearance] setBackgroundImage:navbarImage forBarMetrics:UIBarMetricsDefault];
}

同様に、他の viewController がナビゲーション スタックにプッシュされるとき、別の UIImage (navbar02.png) を使用することを除いて、上記と同じコードを使用しています。

ただし、最初に設定した画像からナビゲーション バーは変わりません。新しいビューが表示されたときに UINavigationBar の背景画像を変更する方法はありますか?

ありがとうございました!

4

2 に答える 2

2

同様の質問へのリンクは次のとおりです: UINavigationBar setBackgroundImage: forBarMetrics: Not Working

答えはこれを使用することです:

[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

使用したコードではなく。

于 2012-04-11T04:13:46.593 に答える
1
float version = [[[UIDevice currentDevice] systemVersion] floatValue];
//  NSLog(@"%f",version);
if (version >= 5.0) {
    UIImage *backgroundImage = [UIImage imageNamed:@"image.png"];
   [self.navigationController.navigationBar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];
}
else
{
   // UIImage *backgroundImage = [UIImage imageNamed:@"image.png"];
    NSString *barBgPath = [[NSBundle mainBundle] pathForResource:@"NavBar" ofType:@"png"];
    [self.navigationController.navigationBar.layer setContents:(id)[UIImage imageWithContentsOfFile: barBgPath].CGImage];
}

私にとってはうまく機能しています...多分それはあなたを助けるでしょう.

于 2012-04-11T04:53:24.263 に答える