8

UINavigationBar'ın alt sınıfını kullanmak istedim (özel arka plan resmi & metin rengini ayarlamak için) ve uygulamasındaki tüm gezinme çubukları için bunu kullanıyorum. NavigationBar salt okunur gibi UINavigationController API docs bakıldığında görünür:Alt Sınıflandırma UINavigationBar ... UINavigationController'da nasıl kullanırım?

@property (nonatomic, salt okunur) UINavigationBar * NavigationBar

aslında özel bir UINavigationBar kullanmak için bir yolu var mı UIViewControllers'im Ben diğer uygulamalar flickr gibi, özel bir gezinme çubukları yapmış olduğunu biliyoruz:

#import <UIKit/UIKit.h> 

@interface MyNavigationBar : UINavigationBar <UINavigationBarDelegate> { 

} 

@end 

uygulama

#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:

İşte

http://img.skitch.com/20100520-bpxjaca11h5xne5yakjdc2m6xx.png

benim UINavigationBar alt sınıfıdır arka planı değiştirmek için bir kategori kullanabileceğimi biliyorum görüntü, ama hala gezinti çubuğu başlığı

@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 

herhangi bir öneri veya diğer çözümler metin rengini ayarlamak mümkün olmak istiyorum? Temel olarak, Flickr'ın uygulama gezinme çubukları gibi açık bir arka plan ve koyu metin oluşturmak istiyorum.

cevap

2

UINavigationBar "renk tonu" özelliğini istediğiniz renge ayarlayın.

+0

Bu, gezinme çubuğunun arka planını değiştirmek için çalışır, ancak açık renkli arka plan rengi kullanmak istediğimden, gezinme çubuğunun varsayılan beyaz metin rengini de değiştirmek isterim. beyaz arka plan, varsayılan beyaz metni karanlık bir şeye dönüştürebilirdim – funkadelic

2

Bir [UIColor colorWithPatternImage:(UIImage*)image] oluşturmayı ve bunu NavBar'ın backgroundColor özelliğine ayarlamayı deneyin. Bunu henüz denemedim, ama şimdi yapacağım.

4

Eğer bunu anladım eğer bilmiyorum. Ama bu sorunu olabileceğini diğerleri için ...

Ne yapmak gerek bu durumda MyNavigationBar içinde (sınıf adınızla XIB'nin sınıfı belirtmektir.

Kontrol oturumu 123 WWDC 2011'de

yılında
İlgili konular