Quería subclave UINavigationBar (para establecer una imagen de fondo personalizada & color de texto) y usar eso para todas las barras de navegación en mi aplicación. En cuanto a los documentos de la API para UINavigationController, parece que navigationbar es de sólo lectura:Subclassing UINavigationBar ... ¿cómo lo uso en UINavigationController?
@property (no atómica, de sólo lectura) UINavigationBar * navigationbar
¿Hay una manera de utilizar realmente una costumbre en UINavigationBar mis UIViewControllers? Sé que otras aplicaciones han hecho las barras de navegación personalizados, como Flickr:
http://img.skitch.com/20100520-bpxjaca11h5xne5yakjdc2m6xx.png
Aquí es mi UINavigationBar subclase:
#import <UIKit/UIKit.h>
@interface MyNavigationBar : UINavigationBar <UINavigationBarDelegate> {
}
@end
la implementación
#import "MyNavigationBar.h"
@implementation MyNavigationBar
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
// Initialization code
}
return self;
}
- (void)drawRect:(CGRect)rect {
// override the standard background with our own custom one
UIImage *image = [[UIImage imageNamed:@"navigation_bar_bgd.png"] retain];
[image drawInRect:rect];
[image release];
}
#pragma mark -
#pragma mark UINavigationDelegate Methods
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
// use the title of the passed in view controller
NSString *title = [viewController title];
// create our own UILabel with custom color, text, etc
UILabel *titleView = [[UILabel alloc] init];
[titleView setFont:[UIFont boldSystemFontOfSize:18]];
[titleView setTextColor:[UIColor blackColor]];
titleView.text = title;
titleView.backgroundColor = [UIColor clearColor];
[titleView sizeToFit];
viewController.navigationItem.titleView = titleView;
[titleView release];
viewController.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.1 green:0.2 blue:0.3 alpha:0.8];
}
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
}
- (void)dealloc {
[super dealloc];
}
@end
I Sé que puedo usar una categoría para cambiar el fondo imagen, pero todavía quiero ser capaz de establecer el color del texto del título de la barra de navegación
@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect {
UIImage *image = [UIImage imageNamed: @"navigation_bar_bgd.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
cualquier sugerencia u otras soluciones? Básicamente quiero crear un fondo claro y texto oscuro como las barras de navegación de aplicaciones de Flickr
Esto funcionaría para cambiar el fondo de la barra de navegación, pero también me gustaría cambiar el color de texto blanco predeterminado de la barra de navegación, ya que quiero usar un color de fondo de color claro. Por ejemplo, si quisiera usar un color de fondo claro. fondo blanco, necesitaría poder cambiar el texto blanco predeterminado a algo oscuro – funkadelic