我要求在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数组中,因此navbar变得杂乱无章。他们的字体,宽度等我不能玩,或者我不知道应该怎么创建它们。
我的问题:
1)在导航栏右侧区域内容纳至少3个项目的正确方法是什么?我问这个是因为我找不到一种方法来播放我使用的UIButtons
的宽度和字体。
2)如果我想为我的通知按钮设置自定义外观(就像通知徽章一样) - 是否有任何指示我如何制作它?要使用哪种控件,如何设置UINavigationBar
中允许的框架和字体?
请帮忙。
答案 0 :(得分:9)
您需要使用UIBarButtonItem
创建包含自定义视图的initWithCustomView
。
自定义视图可以是自定义UIButton,其中数字徽章作为子视图。使用此自定义视图,您还可以控制按钮的宽度。
没有公共API可以直接创建通知徽章。如果是标签栏项目,您可以使用属性badgeValue
设置徽章,但不能使用UIBarButtonItem
设置徽章。
在这里,您需要使用此开源控件:MKNumberBadgeView。
请注意,自iOS 5起,属性rightBarButtonItems
可用。
如果您只需要一个项目设置rightBarButtonItem
而不是。
答案 1 :(得分: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];
答案 2 :(得分:-1)
首先通过
获取navigationController中的相应barbuttonitemlet baritem = navigationItem.right/leftBarButtonItem
baritem.badgeValue = "\(correspondingValues)"