質問

私のナビゲーションバーに背景画像とタイトルが必要です。画像については、カテゴリを書きます。

@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:はい];

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

    self.navigationcontroller setNavigationBarhidden:no];

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

役に立ちましたか?

解決

わかった!

@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

見る ナビゲーションビューの背景画像

他のヒント

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]];

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top