2013-01-24 2 views
1

У меня есть требование отображать число ожидающих уведомлений в панели навигации iPhone. Внешний вид должен выглядеть как значок уведомления - но это не уведомления APNS. Это те, которые отправляются с частного сервера с аналогичной целью.Отображение значка оповещения, как счетчик в UINavigationbar

Я попытался добавить правую/левую кнопку (UIBarButtonItem) в мой UINavigationbar, но кажется, что он очень жесткий по внешнему виду. Я не могу установить его ширину, шрифты и т.д. Смотрите мой код:

self.notifButton = [[UIBarButtonItem alloc] initWithTitle:@"0" style: 
        UIBarButtonItemStyleBordered target:self action:@selector(TouchNotif)]; 

NSMutableArray *items = [[NSMutableArray alloc] init]; 

[items addObject:self.notifButton]; 
self.navigationItem.rightBarButtonItems = items; 

Из других элементов 2 также добавлены к элементам массива, Navbar загроможден. Их шрифты, ширина и т. Д. Я не могу играть, или, может быть, я не знаю, как их создать.

Мои вопросы:

1) Что такое правильный способ для размещения не менее 3 пунктов в NavBar правой части? Я спрашиваю об этом, потому что я не нахожу способ играть с шириной и шрифтом UIButtons, который я использую.

2) Если у меня есть пользовательский внешний вид для моей кнопки уведомления (точно так же, как значок уведомления), есть ли указатели, как это сделать? Какой элемент управления использовать, как установить его фрейм и шрифт, который будет разрешен в пределах UINavigationBar?

Пожалуйста, помогите.

ответ

9

Вам необходимо создать UIBarButtonItem, который содержит пользовательский вид, используя initWithCustomView. Пользовательский вид может быть пользовательским UIButton с номером значка как subview. С помощью этого пользовательского представления вы также можете управлять шириной кнопок.

Для создания значка уведомления нет открытого API. В случае элемента табуляции вы можете установить значок с использованием свойства badgeValue - но не с UIBarButtonItem. Здесь вы должны использовать это управление с открытым исходным кодом: MKNumberBadgeView.

Обратите внимание, что свойство rightBarButtonItems доступно с iOS 5. Если вам нужен только один элемент, установите rightBarButtonItem.

+0

спасибо и +1 тоже. Работает InitWithCustomView. Однако после получения желаемого изображения я не могу установить текст заголовка UIBarButtonItem. Например, в моем коде, когда я делаю self.notifButton.title = @ "мой заголовок", отладчик показывает правильно, но заголовок не отображается на изображении. Что делать? –

+0

Ничего, я нашел свое решение здесь: http://stackoverflow.com/q/2507248/1506363 –

0
UIButton * buttton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[buttton setFrame:CGRectMake(285, 20, 20, 20)]; 
[buttton.layer setCornerRadius:10]; 
[buttton setTitle:@"23" forState:UIControlStateNormal]; 
[buttton.titleLabel setFont:[UIFont systemFontOfSize:12]]; 
[buttton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
[buttton setBackgroundColor:[UIColor whiteColor]]; 
[self.navigationController.view addSubview:buttton]; 
+0

Ребята, надеюсь, это поможет вам. –

0

Сначала получите соответствующий barbuttonitem в navigationController по

let baritem = navigationItem.right/leftBarButtonItem 
baritem.badgeValue = "\(correspondingValues)" 
Смежные вопросы