Skip to content

Commit 7a556e3

Browse files
mikemike
authored andcommitted
Conflicts: Demo/TestBadge/TestBadge/MasterViewController.m UIBarButtonItem+Badge.m
2 parents 58c8050 + 8649da7 commit 7a556e3

File tree

4 files changed

+67
-14
lines changed

4 files changed

+67
-14
lines changed

Demo/TestBadge/TestBadge/MasterViewController.m

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,29 @@ - (void)viewDidLoad
3232
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)];
3333
self.navigationItem.rightBarButtonItem = addButton;
3434

35-
// Build your regular UIBarButtonItem with Custom View
36-
UIImage *image = [UIImage imageNamed:@"someImage"];
37-
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
38-
button.frame = CGRectMake(0,0,image.size.width, image.size.height);
39-
[button addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchDown];
40-
[button setBackgroundImage:image forState:UIControlStateNormal];
35+
// // Build your regular UIBarButtonItem with Custom View
36+
// UIImage *image = [UIImage imageNamed:@"someImage"];
37+
// UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
38+
// button.frame = CGRectMake(0,0,image.size.width, image.size.height);
39+
// [button addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchDown];
40+
// [button setBackgroundImage:image forState:UIControlStateNormal];
41+
//
42+
// // Make BarButton Item
43+
// UIBarButtonItem *navLeftButton = [[UIBarButtonItem alloc] initWithCustomView:button];
44+
// self.navigationItem.leftBarButtonItem = navLeftButton;
45+
// self.navigationItem.leftBarButtonItem.badgeValue = @"1";
46+
// self.navigationItem.leftBarButtonItem.badgeBGColor = self.navigationController.navigationBar.tintColor;
4147

42-
// Make BarButton Item
43-
UIBarButtonItem *navLeftButton = [[UIBarButtonItem alloc] initWithCustomView:button];
44-
self.navigationItem.leftBarButtonItem = navLeftButton;
45-
self.navigationItem.leftBarButtonItem.badgeValue = @"0";
46-
self.navigationItem.leftBarButtonItem.badgeBGColor = self.navigationController.navigationBar.tintColor;
48+
// new method of adding badges
49+
UIImage *image2 = [UIImage imageNamed:@"someImage"];
50+
UIBarButtonItem *navRightButton = [[UIBarButtonItem alloc] initWithImage:image2
51+
style:UIBarButtonItemStylePlain
52+
target:self
53+
action:@selector(buttonPress:)];
54+
self.navigationItem.leftBarButtonItem = navRightButton;
55+
self.navigationItem.leftBarButtonItem.badgeValue = @"2";
56+
self.navigationItem.leftBarButtonItem.badgeBGColor = [UIColor orangeColor];
57+
4758

4859
[NSTimer scheduledTimerWithTimeInterval:1.0
4960
target:self

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,18 @@ self.navigationItem.leftBarButtonItem = navLeftButton;
5656
self.navigationItem.leftBarButtonItem.badgeValue = @"1";
5757
```
5858
59+
A new merge now enables adding badge without a custom view
60+
``` objective-c
61+
UIImage *image = [UIImage imageNamed:@"someImage"];
62+
UIBarButtonItem *navLeftButton = [[UIBarButtonItem alloc] initWithImage:image
63+
style:UIBarButtonItemStylePlain
64+
target:self
65+
action:@selector(buttonPress:)];
66+
self.navigationItem.leftBarButtonItem = navLeftButton;
67+
self.navigationItem.leftBarButtonItem.badgeValue = @"1";
68+
```
69+
70+
5971
Useful properties
6072
---------------
6173

UIBarButtonItem+Badge.m

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,29 @@ @implementation UIBarButtonItem (Badge)
2929

3030
- (void)badgeInit
3131
{
32+
UIView *superview = nil;
33+
CGFloat defaultOriginX = 0;
34+
if (self.customView) {
35+
superview = self.customView;
36+
defaultOriginX = superview.frame.size.width - self.badge.frame.size.width/2;
37+
// Avoids badge to be clipped when animating its scale
38+
superview.clipsToBounds = NO;
39+
} else if ([self respondsToSelector:@selector(view)] && [(id)self view]) {
40+
superview = [(id)self view];
41+
defaultOriginX = superview.frame.size.width - self.badge.frame.size.width;
42+
}
43+
[superview addSubview:self.badge];
44+
3245
// Default design initialization
3346
self.badgeBGColor = [UIColor redColor];
3447
self.badgeTextColor = [UIColor whiteColor];
3548
self.badgeFont = [UIFont systemFontOfSize:12.0];
3649
self.badgePadding = 6;
3750
self.badgeMinSize = 8;
38-
self.badgeOriginX = self.customView.frame.size.width - self.badge.frame.size.width/2;
51+
self.badgeOriginX = defaultOriginX;
3952
self.badgeOriginY = -4;
4053
self.shouldHideBadgeAtZero = YES;
4154
self.shouldAnimateBadge = YES;
42-
// Avoids badge to be clipped when animating its scale
43-
self.customView.clipsToBounds = NO;
4455
}
4556

4657
#pragma mark - Utility methods

UIBarButtonItem-Badge.podspec

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
Pod::Spec.new do |s|
2+
3+
s.name = "UIBarButtonItem-Badge"
4+
s.version = "0.0.1"
5+
s.summary = "Create a BarButtonItem with a badge on top. Easily customizable. Your BarButtonItem can be any custom view you wish for. The badge on top can display any number or string of any size or length."
6+
7+
s.homepage = "https://github.com/mikeMTOL/UIBarButtonItem-Badge"
8+
s.license = 'MIT'
9+
10+
s.author = { "Mike" => "http://mikethinkingoutloud.com" }
11+
12+
s.source = { :git => "https://github.com/mikeMTOL/UIBarButtonItem-Badge.git" }
13+
14+
s.platform = :ios, '6.0'
15+
16+
s.source_files = 'UIBarButtonItem+Badge.{h,m}', 'UIButton+Badge.{h,m}'
17+
s.requires_arc = true
18+
19+
end

0 commit comments

Comments
 (0)