Domanda

In bisogno di un'immagine di sfondo e di un titolo nella mia barra di navigazione. Per l'immagine scrivo una categoria:

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

I chiamare questa categoria nel mio AppDelegate e hanno le immagini di sfondo in tutta l'applicazione:

[navigationController.navigationBar setBackgroundImage]; 

Ogni ViewController ha un titolo:

[self setTitle:@"MyTitle"];

Ma dopo aver impostato l'immagine di sfondo, ho un problema con il titolo.

Nella prima vista ogni opere, vedo l'immagine di sfondo e il titolo :-) Ma nella schermata successiva, il titolo scompare. Solo l'immagine di sfondo è visibile. Forse il titolo è sotto l'immagine?

Tecnicamente è possibile mostrare sia. Con questo trucco funziona:

  1. Nascondi barra PRIMA di aprire la prossima ViewController:

    [self.navigationController setNavigationBarHidden: YES];

  2. Mostra la barra di navigazione nella prossima ViewController:

    [self.navigationController setNavigationBarHidden: NO];

Ora, immagine e titolo sono visibili, ma questa soluzione non è delle migliori; -)

È stato utile?

Soluzione

I got it!

@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

navigazione

Altri suggerimenti

Dopo IOS5 Si dovrebbe fare questo, per esempio in 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]];

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top