Как програмно задавате цвета на фона на UINavigationbar?

Използвам какаов iOS компонент от cocoacontrols.com, който НЕ използва сторибордове. Този клас създава нов модален изглед и модалният изглед има NavigationBar в горната част. Опитвам се да променя цвета на навигационната лента. Във всичките си други изгледи, които са базирани на разкадровка, използвам базов клас STBaseViewController, който задава навигационната лента като бяла.

Промених този клас cocoacontrol да бъде STBaseViewController вместо UIViewController, но той все още не променя фона ми на бял.

@interface BZPasscodeFieldController : STBaseViewController

В BZPasscodeFieldController, който те не правят никаква препратка към лента за навигация, така че не съм сигурен как изобщо се показва (отново няма единствените xibs на сценария и те нямат ленти за навигация)?

Както и да е, някой знае ли как програмно да направи фона на навигационната лента бял?

Освен това, във всички мои контролери за изгледи на сценария, които имат UINavigationBar, добавих UIButton върху областта, където отива заглавието, така че да мога лесно да променя шрифта/стила и също така да го направя с възможност за щракване. Трябва да добавя същия този UIButton към uinavigationBar на този BZPasscodeFieldController, създаден програмно. Как да го направя?


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


Отговори (3)


За вашия въпрос относно бутона на мястото на заглавието на навигационната лента. Всяка навигационна лента има свойство 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
не работи Все още е сиво. Всъщност, ако използвам self.navigationController, той казва, че лентата за навигация е нула? Тогава как изобщо ще покаже навигационна лента, ако е нула? - person jdog; 27.07.2013
comment
@jgervin къде го сложи - person meda; 27.07.2013
comment
viewDidLoad. Мисля, че това всъщност е навигационна лента в UITableView. - person jdog; 28.07.2013