在UINavigationbar中显示计数器等通知标志

我需要在iPhone导航栏中显示未决通知的数量。 外观应该像通知徽章的外观 – 但这些不是APNS通知。 他们是从私人服务器发送类似的目的。

我试图在我的UINavigationbar添加一个右/左button( UIBarButtonItem ),但是它看起来好像非常僵硬。 我不能设置它的宽度,字体等。看我的代码:

  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杂乱无章。 他们的字体,宽度等我不能玩,或者我不知道我应该如何创build它们。

我的问题:

1)在导航栏右侧区域至less容纳3个项目的正确方法是什么? 我问这是因为我没有find一种方式来使用我使用的UIButtons宽度和字体。

2)如果我想为我的通知button自定义外观(就像通知徽章) – 有没有任何指针我怎么做? 要使用哪个控件,如何设置UINavigationBar允许的框架和字体?

请帮忙。

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

没有公共API直接创build通知徽章。 在标签栏项目的情况下,您可以使用属性badgeValue设置一个徽章 – 但不能与UIBarButtonItem 。 在这里你需要使用这个开源的控制: MKNumberBadgeView 。

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

 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]; 

首先在navigationController中获取相应的barbuttonitem

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