Как программно установить цвет фона UINavigationbar?

Я использую компонент iOS какао с сайта cockcontrols.com, который НЕ использует раскадровки. Этот класс создает новое модальное представление, а модальное представление имеет панель навигации вверху. Я пытаюсь изменить цвет панели навигации. Во всех других моих представлениях, основанных на раскадровке, я использую базовый класс STBaseViewController, который задает для панели навигации белый цвет.

Я изменил этот класс управления шоколадом на STBaseViewController вместо UIViewController, но он по-прежнему не меняет фон на белый.

@interface BZPasscodeFieldController : STBaseViewController

В BZPasscodeFieldController, в котором они не ссылаются на панель навигации, поэтому я не уверен, как она вообще появляется (опять же, у нее нет только xibs раскадровки, и у них нет панелей навигации)?

В любом случае, кто-нибудь знает, как программно сделать фоновый цвет панели навигации белым?

Кроме того, во всех моих viewControllers раскадровки, которые имеют UINavigationBar, я добавил UIButton над областью, где находится заголовок, чтобы я мог легко изменить шрифт/стиль, а также сделать его интерактивным. Мне нужно добавить этот же UIButton в uinavigationBar этого BZPasscodeFieldController, созданного программно. Как мне это сделать?


person jdog    schedule 27.07.2013    source источник


Ответы (3)


На ваш вопрос о кнопке на месте заголовка панели навигации. Каждый navigationBar имеет свойство titleView, вы можете назначить ему любое представление. Например, взгляните на этот метод, вы можете вызвать его в своем BZPasscodeFieldController:

- (void) setNavigationBarTitleButton
{
    UIButton* centralButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 44)];
    [centralButton setImage:navigationCentralButtonImage forState:UIControlStateNormal];
    [centralButton setShowsTouchWhenHighlighted:TRUE];
    [centralButton addTarget:self action:@selector(goHigher) forControlEvents:UIControlEventTouchDown];

    self.navigationItem.titleView = centralButton;

}

На ваш предыдущий вопрос все предоставленные ответы уже верны, вызывая их в нужном месте (например, в приложении AppDelegate: didFinishLaunchingWithOptions: это должно работать хорошо, если что-то не испорчено в ваших пользовательских классах контроллера представления.

person ambientlight    schedule 28.07.2013
comment
И вы можете просто перенести свои xib в свою раскадровку, верно? затем просто вывести панель навигации? - person ambientlight; 28.07.2013

Чтобы установить цвет фона панели навигации:

[[UINavigationBar appearance] setBarTintColor:[UIColor orangeColor]];

Чтобы установить цвет оттенка панели навигации:

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
person iAnkit    schedule 08.11.2014

person    schedule
comment
Не работает. Он по-прежнему серый. На самом деле, если я po self.navigationController, он говорит, что панель навигации равна нулю? Тогда как он вообще покажет навигационную панель, если она равна нулю? - person jdog; 27.07.2013
comment
@jgervin куда ты это положил - person meda; 27.07.2013
comment
просмотрDidLoad. Я думаю, что это на самом деле панель навигации в UITableView. - person jdog; 28.07.2013