Skip to content

Instantly share code, notes, and snippets.

@toddlee
Last active December 16, 2015 16:39
Show Gist options
  • Save toddlee/5464273 to your computer and use it in GitHub Desktop.
Save toddlee/5464273 to your computer and use it in GitHub Desktop.
#import <UIKit/UIKit.h>
@interface UIBarButtonItem (Todd)
@property (assign, nonatomic, getter = isSelected) BOOL selected;
- (instancetype)initWithImageName:(NSString *)imageName target:(id)target selector:(SEL)selector;
- (instancetype)initWithImageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName target:(id)target selector:(SEL)selector;
@end
#import "UIBarButtonItem+Todd.h"
@implementation UIBarButtonItem (Todd)
- (UIButton *)createButtonWithImage:(NSString *)imageName selectedImageName:(NSString *)selectedImageName target:(id)target selector:(SEL)selector {
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 48, 44)];
[button setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
if (selectedImageName) {
[button setImage:[UIImage imageNamed:selectedImageName] forState:UIControlStateSelected];
}
[button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
return button;
}
- (instancetype)initWithImageName:(NSString *)imageName target:(id)target selector:(SEL)selector {
return [self initWithImageName:imageName selectedImageName:nil target:target selector:selector];
}
- (instancetype)initWithImageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName target:(id)target selector:(SEL)selector {
UIButton *button = [self createButtonWithImage:imageName selectedImageName:selectedImageName target:target selector:selector];
return [self initWithCustomView:button];
}
- (BOOL)isSelected {
return ((UIButton *)self.customView).isSelected;
}
- (void)setSelected:(BOOL)selected {
((UIButton *)self.customView).selected = selected;
}
@end
@toddlee
Copy link
Author

toddlee commented Apr 26, 2013

This is an UIBarButtonItem category that helps to make it easy to add a borderless button as a bar button item.

@toddlee
Copy link
Author

toddlee commented Jun 1, 2013

Now added support for selected button state.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment