1

ナビゲーションバーに背景画像とタイトルが必要です。画像の場合、カテゴリを記述します。

@implementation UINavigationBar(MyNavigationBar)
- (void)setBackgroundImage {
    UIImageView *aTabBarBackground = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"navBarBackgrd.png"]];
    [self addSubview: aTabBarBackground];
    [self sendSubviewToBack: aTabBarBackground];
    [aTabBarBackground release];
}
@end

AppDelegateでこのカテゴリを呼び出し、アプリケーション全体に背景画像があります。

[navigationController.navigationBar setBackgroundImage]; 

すべてのViewControllerにはタイトルがあります。

[self setTitle:@"MyTitle"];

しかし、背景画像を設定した後、タイトルに問題があります。

すべての作品の最初のビューでは、背景画像とタイトルが表示されます:-)しかし、次のビューでは、タイトルが消えます。背景画像のみが表示されます。たぶん、タイトルは画像の下にありますか?

技術的には、両方を表示することは可能です。このトリックでそれは機能します:

  1. 次のViewControllerを開く前に、ナビゲーションバーを非表示にします。

    [self.navigationController setNavigationBarHidden:YES];

  2. 次のViewControllerにナビゲーションバーを表示します。

    [self.navigationController setNavigationBarHidden:NO];

これで、画像とタイトルが表示されますが、このソリューションは最適ではありません;-)

4

2 に答える 2

2

わかった!

@implementation UINavigationBar(MyNavigationBar)
- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed: @"navBarBackgrd.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

ナビゲーションビューについては、背景画像を参照してください

于 2010-12-08T07:43:27.757 に答える
2

IOS5以降これは、たとえばAppDelegateで行う必要があります


 UIImage *img = [[UIImage imageNamed:@"image.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UINavigationBar appearance] setBackgroundImage:img forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent];
[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:0 green: 0 blue:0  alpha:1]];

于 2012-08-11T15:53:03.777 に答える