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?
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)
Pour iOS 7:
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar.png"] forBarMetrics:UIBarMetricsDefault];
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]};
if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] )
{
UIImage *image = [UIImage imageNamed:@"navigation.png"];
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}
La manière de storyboard:
[[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
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;
}
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];
- (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];
}
}