Desidero creare sottoclasse UINavigationBar (per impostare un'immagine di sfondo personalizzata con il colore del testo &) e utilizzarla per tutte le barre di navigazione nella mia app. Guardando la documentazione API per UINavigationController, sembra che navigationBar è di sola lettura:Sottoclasse UINavigationBar ... come si usa in UINavigationController?
@property (nonatomic, sola lettura) UINavigationBar * navigationBar
C'è un modo di utilizzare effettivamente un UINavigationBar personalizzato in i miei UIViewControllers? So che altre applicazioni hanno fatto le barre di navigazione personalizzati, come Flickr:
http://img.skitch.com/20100520-bpxjaca11h5xne5yakjdc2m6xx.png
Ecco il mio UINavigationBar sottoclasse:
#import <UIKit/UIKit.h>
@interface MyNavigationBar : UINavigationBar <UINavigationBarDelegate> {
}
@end
l'attuazione
#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 so che posso usare una categoria per cambiare lo sfondo immagine, ma ho ancora voglia di essere in grado di impostare il colore del testo della navigazione barra del titolo
@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
suggerimenti o altre soluzioni? Io fondamentalmente voglio creare uno sfondo chiaro e scuro come il testo app barre di navigazione di Flickr
Questo potrebbe funzionare per cambiare lo sfondo della barra di navigazione, ma mi piacerebbe cambiare il colore del testo bianco predefinito della barra di navigazione e, dal momento voglio usare un colore di sfondo di colore chiaro. ad esempio. se volessi usare un sfondo bianco, avrei bisogno di essere in grado di cambiare il testo bianco predefinito in qualcosa di scuro – funkadelic