UINavigationBar image de background personalizada

Utilicé estas soluciones sugeridas para darle a mi UINavigationBar una image personalizada. (Para hacerlo más explícito: agregué una categoría a UINavigationBar en mi file AppDelegate.m). Esto funcionó bien hasta el momento y no tuve ningún problema. Ahora, sin embargo, estaba ejecutando mi aplicación en la beta reciente de iOS5. El UINavigationBar está en blanco ahora nuevamente.

Dado que todas las otras aplicaciones que tengo instaladas, que usan una image personalizada, aún se comportan igual, debe haber algo "incorrecto" en mi código. Supongo que el iOS5 ya no es compatible.

Entonces, ¿alguien tiene una idea de cuál podría ser el problema con mi adopción de las soluciones mencionadas?

La única manera que encontré para hacerlo funcionar fue crear una subclass real de UINavigationBar y luego, en todas las vistas, decirle a IB que use esa class personalizada. No es tan elegante, sin embargo …

Para admitir ambas versiones, debe preguntar si hay setBackgroundImage: forBarMetrics: method.

Echa un vistazo a mi blogpost sobre esto: http://www.mladjanantic.com/setting-custom-background-for-uinavigationbar-what-will-work-on-ios5-and-ios4-too/

Otra posible solución "hacky" es crear una vista personalizada e insertla en UINavigationBar como una subView, puede que siga funcionando:

UIView *backgroundView = ... [navigationBar insertSubview:backgroundView atIndex:0]; 

O bien, verifique la reference actualizada de class UINavigationBar en documentos de iOS5 para el método incorporado para establecer un background personalizado.

Use este codigo

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

esto funcionará

Esto funcionó para mí en mi barra de herramientas

 //toolBar background image set based on iOS version [[UIDevice currentDevice] systemVersion]; if ([[[UIDevice currentDevice] systemVersion] floatValue] > 4.9) { //iOS 5 UIImage *toolBarIMG = [UIImage imageNamed: @"toolBar_brown.png"]; if ([toolBar respondsToSelector:@selector(setBackgroundImage:forToolbarPosition:barMetrics:)]) { [toolBar setBackgroundImage:toolBarIMG forToolbarPosition:0 barMetrics:0]; } } else { //iOS 4 [toolBar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"toolBar_brown.png"]] autorelease] atIndex:0]; }