¿cómo puedo mostrar una imagen de fondo en una barra de navegación o dar color a la barra de navegación en una aplicación de iphone nativa?usando color de imagen o tinte en uinavigationbar en iphone?
Respuesta
Estaba buscando esto hace una semana. Encontré esto aquí discusiones. manzana. com/thread.jspa? threadID = 1649012 & tstart = 0 (lo siento no me permite publicar un enlace real).
-(void)setBackgroundImage:(UIImage*)image withTag:(NSInteger)bgTag{
if(image == NULL){ //might be called with NULL argument
return;
}
UIImageView *aTabBarBackground = [[UIImageView alloc]initWithImage:image];
aTabBarBackground.frame = CGRectMake(0,0,self.frame.size.width,self.frame.size.height);
aTabBarBackground.tag = bgTag;
[self addSubview:aTabBarBackground];
[self sendSubviewToBack:aTabBarBackground];
[aTabBarBackground release];
}
/* input: The tag you chose to identify the view */
-(void)resetBackground:(NSInteger)bgTag {
[self sendSubviewToBack:[self viewWithTag:bgTag]];
}
Hice esto como una categoría para UINavigationBar. una imagen de fondo para configurarlo para un UINavigationBar dentro de un UINavigationBarController, hice esto:
[navigationControllerForChannels.navigationBar setBackgroundImage:[UIImage imageNamed:@"top_bar.png"] withTag:48151623];
he tenido algo buginess al actualizar la barra de pestañas, por lo que desea llamar
[self.navigationController.navigationBar resetBackground:48151623];
Después de cualquier modificación a la barra.
una imagen de fondo va a tomar un poco más de trabajo (puede intentar establecer un titleView del mismo tamaño que la barra en sí mismo, no lo he probado yo mismo) o agregar una vista detrás de las subvistas existentes. El color del tinte es fácil: navBar.tintColor = [UIColor orangeColor];
Esto es como lo hice en iOS4:
#import <QuartzCore/QuartzCore.h> // For .layer
self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"navigationBarBackgroundImage"].CGImage;
self.navigationController.navigationBar.tintColor = [UIColor orangeColor];
No hay necesidad de cambiar subvistas entre Z-órdenes (-exchangeSubviewAtIndex: tanto la imagen de fondo y el conjunto tintColor en una línea de código withSubviewAtIndex :), y trabaja con @ Imagen 2x también.
Puede anular UINavigationBar drawRect. El código se puede colocar en appDelegate.m Lo he probado y funciona en iOS 3x y 4x.
@implementation UINavigationBar (UINavigationBarCategory)
- (void)drawRect:(CGRect)rect {
UIColor *color = [UIColor blackColor]; //tint color
UIImage *img = [UIImage imageNamed: @"navBarBg.png"]; // your image
[img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
self.tintColor = color;
}@end
Si utiliza la solución CGImage, es posible que tenga un problema con el tamaño de la imagen:
CGRect layer=self.navigationController.navigationBar.frame;
layer.size.height=57.0;
layer.origin.y=0;
self.navigationController.navigationBar.frame=layer;
CGImageRef imageRef = [UIImage imageNamed:@"myImg.png"].CGImage;
self.navigationController.navigationBar.layer.contents = (id)imageRef;
Me parece que la imagen está estirada hacia abajo, ya que la capa parece tener una altura de 44.0 píxeles, pero una imagen de fondo para UINavigationBar debe ser al menos 57.0.
Si intenta mover el marco de la capa, todos los botones se moverán dentro de él.
Para IOS5 usar las siguientes líneas de código:
UINavigationBar *navBar = [[self navigationController] navigationBar];
UIImage *backgroundImage = [UIImage imageNamed:@"nav-bar-background-normal"];
[navBar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];
para mantener la compatibilidad hacer una comprobación para ver si la barra de navegación responde a setBackgroundImage: forBarMetrics:
Más información sobre: http://sebastiancelis.com/2009/12/21/adding-background-image-uinavigationbar/
¿Dónde pone exactamente estas tres líneas de código para que funcionen cuando se carga el controlador de vista de navegación? – BCXtreme
Configúralo antes de que aparezca la vista. Puede configurarlo en viewWillAppear: animated: o viewDidLoad: para una viewController dada. Si está creando un nuevo navigationController, puede configurar backgroundImage después de la asignación. Si su mainWindow tiene navigationController, puede configurarlo en la aplicación: didFinishLaunchingWithOptions: before [self.window makeKeyAndVisible]; – Dare2Dream
Tengo estas tres líneas de código en el método viewDidLoad para mi clase Custom NavigationController. Sin embargo, la barra de navegación sigue siendo negra opaca. ¿Hay algo más que deba hacer? Lo siento, soy nuevo en la programación de Xcode y iOS. – BCXtreme
Para iOS5 e iOS6 he usado estas soluciones y funcionó a la perfección, creando una imagen de fondo Universal UINavigationBar.
iPhone Retina Retrato de 640 x 88 píxeles/iPhone no Retina Retrato 320px x 44px
Dentro AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
colocar este código
// Set the status bar to black color.
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
// Change @"menubar.png" to the file name of your image.
UIImage *navBar = [UIImage imageNamed:@"menubar.png"];
[[UINavigationBar appearance] setBackgroundImage:navBar forBarMetrics:UIBarMetricsDefault];
No se olvide de cambiar el nombre de la imagen (menubar.png)
Salida este enlace para obtener la respuesta completa http://www.lwxted.com/blog/2012/add-custom-background-image-uinavigationbar-ios-5/
- 1. Tinte de imagen usando CSS sin superposición
- 2. Tinte de un NSImage (o CIImage) en escala de grises
- 3. UINavigationBar color predeterminado
- 4. Agregar un tinte a una imagen
- 5. Eliminar imagen de fondo en UINavigationBar
- 6. jQuery: hay una forma de aplicar color (tinte) a una imagen?
- 7. UINavigationController cambie el color del tinte de la barra de navegación de forma global y programáticamente
- 8. Cómo agregar imágenes en UINavigationBar en la aplicación para iPhone
- 9. Cómo obtener una imagen en color en el iPhone SDK
- 10. Color del botón en la barra de navegación - iPhone
- 11. Conjunto de iPhone Color del tinte del botón de la barra posterior Artículo
- 12. CSS: cómo convertir una imagen en color a una imagen de color gris o negro/blanco
- 13. Establecer color de fondo para UINavigationBar
- 14. cómo crear el botón de información en uinavigationbar en iphone
- 15. Detección de color de imagen usando Python
- 16. usando UINavigationBar sin UINavigationController
- 17. Cambiar la imagen de fondo UINavigationBar
- 18. Cambie el color del negro translúcido UINavigationBar
- 19. Cambiar el tinte de dibujable en el selector xml
- 20. Cambiar el color del tinte del teclado para UITextField
- 21. iPhone: UINavigationBar con botones: ajuste la altura
- 22. Detección de bordes de imagen en iPhone usando Image Magick
- 23. detectar el color más usado en una imagen usando python
- 24. Agregar botón izquierdo a UINavigationBar (iPhone)
- 25. Correo electrónico dentro de la aplicación del iPhone SDK 3.0 - cambio del color del tinte de la barra de navegación
- 26. Obtener color de imagen
- 27. spacing rightBarButtonItems en UINavigationBar
- 28. Cómo teñir una imagen/mostrar un color?
- 29. Eliminación del efecto brillo de los botones en un UINavigationBar
- 30. No se puede establecer un botón UIB de nuevo en el color de tinte predeterminado
Con mucho, la mejor manera de hacer esto. – freespace
Completamente segundo eso. El uso de sendSubviewToBack parece ocultar el texto del título de navigationController y todas las soluciones drawRect son exageradas. –
roto en iOS5. –