Как настроить UINavigationBar

Я борюсь с пользовательской UINavigationBar. Причина, по которой я хочу настроить, заключается в том, что одно и то же действие может выполняться в другом контроллере представления. Выкладываю несколько изображений для примера.

Панель навигации - 1Панель навигации - 2 Панель навигации - 3

Как вы можете видеть из изображений выше. Я думаю, вы понимаете, что я имею в виду. Я пытался и искал, но я не получил ответа, который хотел. Кроме того, я попытался использовать UIView для этого, это сработало, но я не думаю, что это правильный способ сделать это. Поэтому мне нужна помощь от вас, ребята, чтобы привести меня на правильный путь. :) :) Спасибо.


person tan    schedule 17.04.2015    source источник


Ответы (2)


Таким образом, вы можете установить собственный вид заголовка для панели навигации.

//To hide default back button
self.navigationItem.hidesBackButton=YES;

//Title View for Navigation
UIView *navTitle1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
[navTitle1 setBackgroundColor:[UIColor lightGrayColor]];

//Left View button and separator
UIButton *backBarButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 44)];
[backBarButton setTitle:@"Back" forState:UIControlStateNormal];

UIView *ttlview1 = [[UIView alloc] initWithFrame:CGRectMake(51, 0, 1, 44)];
[ttlview1 setBackgroundColor:[UIColor darkGrayColor]];


//Center view with two buttons and seprator for them
UIView *middleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 121, 44)];
[middleView setBackgroundColor:[UIColor clearColor]];
[middleView setCenter:navTitle1.center];

UIButton *postBarButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 60, 44)];
[postBarButton setTitle:@"Post" forState:UIControlStateNormal];

UIView *ttlview2 = [[UIView alloc] initWithFrame:CGRectMake(middleView.frame.size.width/2, 0, 1, 44)];
[ttlview2 setBackgroundColor:[UIColor darkGrayColor]];

UIButton *memeBarButton = [[UIButton alloc] initWithFrame:CGRectMake((middleView.frame.size.width/2)+1, 0, 60, 44)];
[memeBarButton setTitle:@"Meme" forState:UIControlStateNormal];

[middleView addSubview:ttlview2];
[middleView addSubview:postBarButton];
[middleView addSubview:memeBarButton];

//Right button with seprator before that
UIView *ttlview3 = [[UIView alloc]     initWithFrame:CGRectMake(self.view.frame.size.width-71, 0, 1, 44)];
[ttlview3 setBackgroundColor:[UIColor darkGrayColor]];

Вы можете обратиться к THIS для более подробной информации.

person Viral Savaj    schedule 17.04.2015
comment
Это то, что я делал раньше. Правильно ли это делать вместо настройки. - person tan; 17.04.2015
comment
Я думаю, что это тот способ, которым вы можете выполнять высокий уровень настройки, панель навигации по умолчанию не позволяет выполнять такую ​​​​настройку напрямую с помощью собственных функций и кнопок. - person Viral Savaj; 17.04.2015

Вы можете создать 2 пользовательских UIBarButtonItem из 2 представлений, используя этот документ:

Из документации Apple: Инициализирует новый элемент, используя указанное пользовательское представление.

- (id)initWithCustomView:(UIView *)customView

Параметры customView: пользовательское представление, представляющее элемент. Возвращаемое значение Недавно инициализированный элемент с указанными свойствами.

  • Элемент левой панели: 1 вид содержит 3 кнопки: Project, Kiara Paradize, Artist Impression.

  • Элемент правой панели: 1 вид содержит 4 кнопки: Зарегистрироваться | Вход (кнопка «Профиль» при входе пользователя в систему) | Гамбургер-меню

Затем:

  • self.navigationItem.leftBarButtonItem = UIBarButtonItem из левого пользовательского представления
  • self.navigationItem.rightBarButtonItem = UIBarButtonItem из правого пользовательского представления
person Ryan Ho    schedule 21.04.2015