Establezca la image de la barra de navigation en iOS 7

Quiero convertir mi proyecto actual de iOS 6 a iOS 7. En iOS 6, mi proyecto funciona bien, pero en iOS 7, la image de la barra de navigation no se muestra correctamente.

Utilicé este fragment de código para iOS 6,

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

¿Cómo puedo configurar la image de la barra de navigation en iOS 7?

Intente agregar el código siguiente en AppDelegate

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

Esta es la versión Swift:

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

Para iOS 7:

 [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar.png"] forBarMetrics:UIBarMetricsDefault]; 
 if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) { UIImage *image = [UIImage imageNamed:@"navigation.png"]; [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; } 

La forma de Storyboard:

  1. Arrastre una vista de image a la barra inferior de la escena del guión gráfico.
  2. Controle y arrastre desde el elemento de navigation de la izquierda en la list de escenas hasta la vista de la image recién creada.
  3. Haga clic en la vista de la image y configure la image en el atributo.

Utilice esta syntax simple para cambiar el Navigation Background Easy Way.

 self.navigationController.navigationBar.barTintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"YourImage.png"]]; self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]}; 

Solo haz esto …

 - (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; } 

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

Funciona si sigue las reglas mencionadas en la guía ios7: • Si desea un color sólido sin gradiente, cree una image de 1 x 1 punto. • Si desea un degradado vertical, cree una image que tenga un ancho de 1 punto y una altura que coincida con el alto del background del elemento de la interfaz de usuario. • Si desea proporcionar una apariencia texturada repetitiva, debe crear una image con dimensiones que coincidan con las dimensiones de la parte repetitiva de la textura. • Si desea proporcionar una apariencia texturada no repetitiva, debe crear una image estática con dimensiones que coincidan con las dimensiones del área de background del elemento de la interfaz de usuario.

Para get más información, siga el enlace:
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/ResizableImages.html#//apple_ref/doc/uid/TP40006556-CH30-SW1

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

Prueba este código en la class appDelegate que te ayudará.

 [[UINavigationBar appearance] setBackgroundImage:[[UIImage imageNamed:@"navbarimg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)] forBarMetrics:UIBarMetricsDefault];