color bar ios uinavigationbar ios8 background-image

ios - bar - uinavigationitem title color



iOS 8 NavigationBar BackgroundImage (3)

Encontré la solución. Necesitaba usar el método resizableImageWithCapInsets: resizingMode: y establecer el resizingMode en UIImageResizingModeStretch, de lo contrario la imagen seguiría mosaico en la barra de navegación.

C objetivo:

[[UIImage imageNamed:@"nav-image-portrait"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0) resizingMode:UIImageResizingModeStretch];

Swift 3/4:

UINavigationBar.appearance().setBackgroundImage(UIImage(named: "image")!.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch), for: .default)

Con iOS 8, el concepto de solo tamaños de iPhone y iPad junto con el retrato y el paisaje han cambiado y, por lo tanto, la configuración de las barras de navegación de la imagen de fondo no funciona de la misma manera. Actualmente estoy usando el siguiente código:

UIImage *NavigationPortraitBackground = [[UIImage imageNamed:@"nav-image-portrait"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; UIImage *NavigationLandscapeBackground = [[UIImage imageNamed:@"nav-image-landscape"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; [[UINavigationBar appearance] setBackgroundImage:NavigationPortraitBackground forBarMetrics:UIBarMetricsDefault]; [[UINavigationBar appearance] setBackgroundImage:NavigationLandscapeBackground forBarMetrics:UIBarMetricsCompact];

La porción de métricas de barra ha quedado obsoleta a partir de iOS 8. Al iniciar mi aplicación, simplemente repite la imagen de barra horizontalmente cuando está en un iPhone 6 o 6 Plus. He investigado las divisiones de imágenes, pero tampoco creo que sea la solución.


Este es un código de muestra más preciso y preciso para todos los tamaños de pantalla. ayudará

CGRect screenRect = [[UIScreen mainScreen] bounds]; CGFloat screenWidth = screenRect.size.width; [[UINavigationBar appearance] setBackgroundImage:[[UIImage imageNamed:@"header"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, screenWidth-50, 50)] forBarMetrics:UIBarMetricsDefault];


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

Use el código anterior que funciona. Y use una imagen de tamaño pequeño (40*navigarbarheight) 40 es el ancho de la imagen