Изменение цвета UINavigationBar

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{
self.navigationController.navigationBar.tintColor = [UIColor blackColor];
if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) 
{       
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
                                                                                          target:self
                                                                                          action:@selector(cancel)];

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Send to Twitter"
                                                                              style:UIBarButtonItemStyleDone
                                                                             target:self
                                                                             action:@selector(save)];

}
return self;
}

Еще один фрагмент кода

 - (void)loadView 
    {
[super loadView];

self.navigationController.navigationBar.tintColor = [UIColor blackColor];
self.view.backgroundColor = [UIColor whiteColor];

self.textView = [[UITextView alloc] initWithFrame:self.view.bounds];
textView.delegate = self;
textView.font = [UIFont systemFontOfSize:15];
textView.contentInset = UIEdgeInsetsMake(5,5,0,0);
textView.backgroundColor = [UIColor whiteColor];    
textView.autoresizesSubviews = YES;
textView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

[self.view addSubview:textView];
}

Я пытаюсь изменить цвет панели навигации на черный, однако, что бы я здесь ни делал, цвет по-прежнему остается по умолчанию (синий). Как поменять цвет полоски над просмотром ??

введите описание изображения здесь


person anc1revv    schedule 21.05.2011    source источник
comment
Хотите знать, поместили ли вы также панель навигации в файл пера?   -  person MobileSoul    schedule 21.05.2011


Ответы (2)


Попробуйте что-нибудь вроде:

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

Это должно быть сделано в viewWillAppear:, так как во время init метод self.navigationController будет получен как nil и, следовательно, не даст никакого эффекта.

Надеюсь это поможет.

person Scott Forbes    schedule 21.05.2011
comment
Если вы помещаете эту строку в свой метод initWithNibName:bundle, поместите ее в оператор if - любые изменения в self до этого будут перезаписаны и потеряны. - person Scott Forbes; 21.05.2011
comment
Если это в методе init, тогда self.navigationController будет nil. Это должно происходить чем-то вроде -viewWillAppear: или подобным способом. - person Dave DeLong; 21.05.2011
comment
@DaveDeLong: Отличный комментарий. Я отредактировал ответ Скотта и добавил в ответ то, что вы сказали. Итак, все пользователи, ссылающиеся на этот ответ, знают, где им следует его использовать. Спасибо - person Parth Bhatt; 29.03.2012

Если вы используете программный подход (похоже, что вы этого не делаете), вы можете написать этот код

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

// Override point for customization after application launch.

// window initialization
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

YourViewController *viewController = [[YourViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] \
initWithRootViewController:viewController];
[viewController release];
[[navigationController navigationBar] setTintColor:[UIColor blackColor]];
[window addSubview:navigationController.view];

[self.window makeKeyAndVisible];

return YES;

}

Меня устраивает. Надеюсь, поможет! ;)

person Francesco Puglisi    schedule 21.05.2011