2010-07-22 6 views

Répondre

0

Ajoutez simplement votre arrière-plan comme sous-vue, comme suggéré par jrtc27 et changez la couleur de teinte en fonction de vos besoins.

0

Vous pouvez également remplacer la fonction drawRect.

@implementation UINavigationBar (UINavigationBarCustom) 

- (void)drawRect:(CGRect)rect { 

    UIImage *image = [UIImage imageNamed:@"nav_bar_logo.png"]; 
    [image drawInRect:rect]; 
} 

@end 
0

Vous pouvez également remplacer le drawLayer: inContext: méthode dans une classe de catégorie UINavigationBar. Dans la méthode drawLayer: inContext:, vous pouvez dessiner l'image d'arrière-plan que vous souhaitez utiliser. Vous pouvez également utiliser des images de différentes tailles pour les orientations portrait et paysage si vous le souhaitez.

- (void) drawLayer:(CALayer *)layer inContext:(CGContextRef)context 
{ 
    if ([self isMemberOfClass:[UINavigationBar class]] == NO) { 
     return; 
    } 

    UIImage *image = (self.frame.size.width > 320) ? 
         [UINavigationBar bgImageLandscape] : [UINavigationBar bgImagePortrait]; 
    CGContextClip(context); 
    CGContextTranslateCTM(context, 0, image.size.height); 
    CGContextScaleCTM(context, 1.0, -1.0); 
    CGContextDrawImage(context, CGRectMake(0, 0, self.frame.size.width, self.frame.size.height), image.CGImage); 
} 

Et comme un projet démo complète Xcode sur la personnalisation de l'apparence de UINavigationBar this et this pourrait être utile.

2

Utilisez ce code

 UIImage *backgroundImage = [UIImage imageNamed:@"strip.png"]; 
     [upnavbar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault]; 

ce travail wil.