Вопрос по ios, uinavigationbar, iphone, uibarbuttonitem – Отображение значка уведомления в виде счетчика в UINavigationbar

1

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

Я попытался добавить правую / левую кнопку (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 элемента также добавлены в массив элементов, навигационная панель загромождена. Я не могу играть с их шрифтами, шириной и т. Д.не знаю, как мне их создать.

Мои вопросы:

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

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

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

Ваш Ответ

3   ответа
9

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

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

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

Неважно, я нашел свое решение здесь:stackoverflow.com/q/2507248/1506363 Nirav Bhatt
спасибо и +1 тоже. InitWithCustomView работал. Однако после получения желаемого изображения я не могу установить текст заголовка UIBarButtonItem. Например, в моем коде, когда я делаю self.notifButton.title = @ "мой титул отладчик показывает правильно, но заголовок не виден на изображении. Что делать? Nirav Bhatt
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];
Ребята, надеюсь, это вам поможет. Palani Krishnan
-1

с помощью

let baritem = navigationItem.right/leftBarButtonItem
baritem.badgeValue = "\(correspondingValues)"

Похожие вопросы