Skip to content

Instantly share code, notes, and snippets.

@laullon
Created January 31, 2012 18:39
Show Gist options
  • Save laullon/1712104 to your computer and use it in GitHub Desktop.
Save laullon/1712104 to your computer and use it in GitHub Desktop.
Badge number on a UIButton using MKNumberBadgeView
################################
### UIButton+BPBadgeButton.h ###
################################
#import <UIKit/UIKit.h>
@interface UIButton (BPBadgeButton)
@property (nonatomic) NSUInteger badge;
@end
################################
### UIButton+BPBadgeButton.h ###
################################
#import "UIButton+BPBadgeButton.h"
#import "MKNumberBadgeView.h"
#import <objc/runtime.h>
static char const * const badgeKey = "badge";
@interface UIButton ()
-(MKNumberBadgeView *)badgeView;
@end
@implementation UIButton (BPBadgeButton)
-(void)setBadge:(NSUInteger)newBadge
{
MKNumberBadgeView *badgeView = [self badgeView];
badgeView.value = newBadge;
badgeView.frame = CGRectMake(self.frame.size.width-badgeView.badgeSize.width-10,
0,
badgeView.badgeSize.width+10,
self.frame.size.height);
badgeView.hidden = (newBadge == 0);
}
-(NSUInteger)badge
{
MKNumberBadgeView *badgeView = [self badgeView];
return badgeView.value;
}
-(MKNumberBadgeView *)badgeView;
{
MKNumberBadgeView *badgeView = (MKNumberBadgeView *)objc_getAssociatedObject(self, badgeKey);
if(!badgeView){
badgeView = [[MKNumberBadgeView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
[self addSubview:badgeView];
badgeView.hidden = YES;
objc_setAssociatedObject(self, badgeKey, badgeView, OBJC_ASSOCIATION_RETAIN);
}
return badgeView;
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment