web-dev-qa-db-fra.com

Définir l'image de la barre de navigation dans iOS 7

Je souhaite convertir mon projet actuel d'iOS 6 à iOS 7. Sous iOS 6, mon projet fonctionne correctement, mais sous iOS 7, l'image de la barre de navigation ne s'affiche pas correctement.

J'ai utilisé cet extrait de code pour iOS 6,

UIImage *imgNav = [UIImage imageNamed:@"navigation.png"];
self.navigationController.navigationBar.frame = CGRectMake(0, 0, 320, 44);
[self.navigationController.navigationBar setBackgroundImage:imgNav forBarMetrics:
     UIBarMetricsDefault];

Comment définir l'image de la barre de navigation dans iOS 7?

14
Mayuri R Talaviya

Essayez d'ajouter le code ci-dessous dans AppDelegate

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigation.png"] 
                                   forBarMetrics:UIBarMetricsDefault];

Ceci est la version Swift:

UINavigationBar.appearance().setBackgroundImage(UIImage.init(named: "navigation.png"), forBarMetrics: UIBarMetrics.Default)

Swift 3 version:

UINavigationBar.appearance().setBackgroundImage(UIImage.init(named: "logo-dark.png"), for: UIBarMetrics.default)
30
iCoder

Pour iOS 7:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar.png"] forBarMetrics:UIBarMetricsDefault];
15
Preet

Utilisez cette syntaxe simple pour Change Navigation Background Easy Way.

self.navigationController.navigationBar.barTintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"YourImage.png"]];
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};
5
Super Developers
if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] )
{

    UIImage *image = [UIImage imageNamed:@"navigation.png"];
    [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}
4
Pradeep

La manière de storyboard:

  1. Faites glisser une vue d'image sur la barre inférieure de la scène du scénarimage.
  2. Tout en maintenant la touche Ctrl enfoncée, faites glisser l'élément de navigation de gauche dans la liste des scènes jusqu'à la nouvelle vue créée.
  3. Cliquez sur la vue d'image et définissez l'image dans l'attribut.
3
Will

[[UINavigationBar Apparence] setBackgroundImage: [UIImage imageNamed: @ "navigation.png"] pourBarMetrics: UIBarMetricsDefault];

Son fonctionnement si vous suivez les règles mentionnées dans le guide iOS 7: • Si vous souhaitez une couleur unie sans dégradé, créez une image 1 x 1 point. • Si vous souhaitez un dégradé vertical, créez une image ayant une largeur de 1 point et une hauteur correspondant à la hauteur de l’arrière-plan de l’élément UI. • Si vous souhaitez fournir une apparence texturée répétitive, vous devez créer une image dont les dimensions correspondent à celles de la partie répétée de la texture. • Si vous souhaitez fournir une apparence texturée non répétée, vous devez créer une image statique dont les dimensions correspondent à celles de la zone d’arrière-plan de l’élément UI. 

Pour plus d'informations, veuillez suivre le lien:
https://developer.Apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/ResizableImages.html#// Apple_ref/doc/uid/TP40006556-CH30-SW1

1
Sandip Patel - SM

Il suffit de faire ça ..

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // This will set the backGround image for all the Navigation Bars

    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBar"] forBarMetrics:UIBarMetricsDefault];



    return YES;
}
1
Gokul

Essayez ce code dans la classe appDelegate cela vous aidera.

[[UINavigationBar appearance] setBackgroundImage:[[UIImage imageNamed:@"navbarimg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)] forBarMetrics:UIBarMetricsDefault];
0
Shahzaib Maqbool
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{


    [[UINavigationBar appearance] setTitleTextAttributes: @{
                                                            UITextAttributeTextColor: [UIColor whiteColor],
                                                            UITextAttributeTextShadowColor: [UIColor clearColor],
                                                            UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)],
                                                            UITextAttributeFont: [UIFont fontWithName:@"AppleGothic" size:20.0f]
                                                            }];

 if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
    {


        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigatio_for_ios6"] forBarMetrics:UIBarMetricsDefault];

        [[UINavigationBar appearance] setTitleVerticalPositionAdjustment:0.0 forBarMetrics:UIBarMetricsDefault];
    }
else
    {
        [[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x067AB5)];

        // Uncomment to change the color of back button
        [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

        // Uncomment to assign a custom backgroung image
        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigon_bg_ios7.png"] forBarMetrics:UIBarMetricsDefault];

        // Uncomment to change the back indicator image

        [[UINavigationBar appearance] setBackgroundColor:[UIColor whiteColor]];
        [[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@""]];

        // Uncomment to change the font style of the title

        NSShadow *shadow = [[NSShadow alloc] init];
        shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8];
        shadow.shadowOffset = CGSizeMake(0, 1);

        [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName,shadow, NSShadowAttributeName,[UIFont fontWithName:@"HelveticaNeue-Bold" size:18.0], NSFontAttributeName, nil]];


        [[UINavigationBar appearance] setTitleVerticalPositionAdjustment:0.0 forBarMetrics:UIBarMetricsDefault];
    }



}
0
Paresh Hirpara