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 个项目也添加到 items 数组中,所以导航栏很混乱。它们的字体、宽度等我无法使用,或者我不知道应该如何创建它们。

我的问题:

1)在导航栏右侧区域中容纳至少 3 个项目的正确方法是什么?我问这个是因为我找不到UIButtons使用我使用的宽度和字体的方法。

2)如果我想为我的通知按钮自定义外观(就像通知徽章一样) - 是否有任何指示如何制作它?使用哪个控件,如何设置允许的框架和字体UINavigationBar

请帮忙。

4

3 回答 3

9

您需要创建一个UIBarButtonItem包含自定义视图的initWithCustomView. 自定义视图可以是带有数字徽章的自定义 UIButton 作为子视图。使用此自定义视图,您还可以控制按钮的宽度。

没有公共 API 可以直接创建通知徽章。如果是标签栏项目,您可以使用该属性设置徽章badgeValue- 但不能使用UIBarButtonItem. 这里需要用到这个开源控件:MKNumberBadgeView

请注意,该属性rightBarButtonItems从 iOS 5 开始可用。如果您只需要一个项目,请rightBarButtonItem改为设置。

于 2013-01-24T11:40:20.253 回答
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];
于 2014-12-12T07:05:12.510 回答
-1

首先在navigationController中获取相应的barbuttonitem

let baritem = navigationItem.right/leftBarButtonItem
baritem.badgeValue = "\(correspondingValues)"
于 2017-09-11T06:15:24.543 回答