这是这个github类的分类。它也被扩展用于UIButton。
创建一个顶部带有徽章的BarButtonItem。易于自定义。您的BarButtonItem可以是您想要的任何自定义视图。顶部的徽章可以显示任何大小或长度的数字或字符串。
创建一个顶部带有徽章的UIButton。易于自定义。您的UIButton可以是您想要的任何按钮。顶部的徽章可以显示任何大小或长度的数字或字符串。
相当简单,只需下载并将 "UIBarButtonItem+Badge.h" 和 "UIBarButtonItem+Badge.m" 添加到您的xcodeproject中。
别忘了在需要的地方导入头文件
#import "UIBarButtonItem+Badge.h"
然后,要添加徽章,请在UIBarButton上调用setBadgeValue,这样技巧就完成了!请确保您正在使用包含自定义视图的UIBarButtonItem
// Build your regular UIBarButtonItem with Custom View
UIImage *image = [UIImage imageNamed:@"someImage"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0,0,image.size.width, image.size.height);
[button addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchDown];
[button setBackgroundImage:image forState:UIControlStateNormal];
// Make BarButton Item
UIBarButtonItem *navLeftButton = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.leftBarButtonItem = navLeftButton;
self.navigationItem.leftBarButtonItem.badgeValue = @"1";
最新合并现在允许在不带自定义视图的情况下添加徽章
UIImage *image = [UIImage imageNamed:@"someImage"];
UIBarButtonItem *navLeftButton = [[UIBarButtonItem alloc] initWithImage:image
style:UIBarButtonItemStylePlain
target:self
action:@selector(buttonPress:)];
self.navigationItem.leftBarButtonItem = navLeftButton;
self.navigationItem.leftBarButtonItem.badgeValue = @"1";
查看UIBarButtonItem+Badge.h以了解如何自定义徽章。请记住,每次更改这些值之一时,徽章将直接刷新以处理您的样式首选项。
// Each time you change one of properties, the badge will refresh with your changes
// Badge value to be display
@property (nonatomic) NSString *badgeValue;
// Badge background color
@property (nonatomic) UIColor *badgeBGColor;
// Badge text color
@property (nonatomic) UIColor *badgeTextColor;
// Badge font
@property (nonatomic) UIFont *badgeFont;
// Padding value for the badge
@property (nonatomic) CGFloat badgePadding;
// Minimum size badge to small
@property (nonatomic) CGFloat badgeMinSize;
// Values for offseting the badge over the BarButtonItem you picked
@property (nonatomic) CGFloat badgeOriginX;
@property (nonatomic) CGFloat badgeOriginY;
// In case of numbers, remove the badge when reaching zero
@property BOOL shouldHideBadgeAtZero;
// Badge has a bounce animation when value changes
@property BOOL shouldAnimateBadge;
您还可以选择关闭在更改徽章值时触发的微小的弹跳动画,或者决定是否显示0。
此类与iOS >= 6.0兼容。
欢迎任何建议!因为我正在寻找良好的实践,希望更好地理解行为以及Objective-C的一般知识!谢谢。
MIT许可(MIT)
版权所有
在此特此免费许可给任何获得本软件及其相关文档文件(以下简称“软件”)副本的人,以不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许提供软件的个人以本许可条件这样做。
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按照“原样”提供,不提供任何形式的明示或暗示保证,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类责任基于合同、侵权或其他原因,无论出自、源于或与软件或其使用或其他方式有关。