Created
January 13, 2013 18:51
-
-
Save trivektor/4525664 to your computer and use it in GitHub Desktop.
Removing shine effect from the buttons in a UINavigationBar
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // http://pastebin.com/raw.php?i=Xdf49BgK | |
| @interface UIBarButtonItem (UIBarButtonItem_customBackground) | |
| + (id) customBarButtonWithTitle:(NSString *)title target:(id)target selector:(SEL)selector; | |
| + (id) customBackButtonWithTitle:(NSString *)title target:(id)target selector:(SEL)selector; | |
| @end | |
| @implementation UIBarButtonItem (UIBarButtonItem_customBackground) | |
| + (id) customButtonWithImageNamed:(NSString *)imageName selectedImageNamed:(NSString *)selectedImageName leftCapWidth:(CGFloat)leftCapWidth edgeInsets:(UIEdgeInsets)edgeInsets title:(NSString *)title target:(id)target selector:(SEL)selector { | |
| UIButton* customButton = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| [customButton addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside]; | |
| customButton.titleLabel.font = [UIFont boldSystemFontOfSize:12.0f]; | |
| customButton.titleLabel.shadowColor = [UIColor colorWithRed:0.0f/255.0f green:0.0f/255.0f blue:0.0f/255.0f alpha:0.25f]; | |
| customButton.titleLabel.shadowOffset = CGSizeMake(0.0f, -1.0f); | |
| customButton.titleLabel.lineBreakMode = UILineBreakModeTailTruncation; | |
| customButton.titleEdgeInsets = edgeInsets; | |
| UIImage* navButtonBackgroundImage = [[UIImage imageNamed:imageName] stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:0.0f]; | |
| UIImage* navButtonPressedBackgroundImage = [[UIImage imageNamed:selectedImageName] stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:0.0f]; | |
| [customButton setBackgroundImage:navButtonBackgroundImage forState:UIControlStateNormal]; | |
| [customButton setTitle:title forState:UIControlStateNormal]; | |
| [customButton setBackgroundImage:navButtonPressedBackgroundImage forState:UIControlStateHighlighted]; | |
| [customButton setBackgroundImage:navButtonPressedBackgroundImage forState:UIControlStateSelected]; | |
| CGSize size = CGSizeMake(30.0f, 30.0f); | |
| if (title != nil) { | |
| size = [[NSString stringWithString:title] sizeWithFont:customButton.titleLabel.font]; | |
| } | |
| customButton.frame = CGRectMake(0.0f, 0.0f, size.width + 20.0f, 30.0f); | |
| customButton.layer.shouldRasterize = YES; | |
| customButton.layer.rasterizationScale = [[UIScreen mainScreen] scale]; | |
| return [[[UIBarButtonItem alloc] initWithCustomView:customButton] autorelease]; | |
| } | |
| + (id) customBarButtonWithTitle:(NSString *)title target:(id)target selector:(SEL)selector { | |
| return [self customButtonWithImageNamed:@"navButtonBG.png" | |
| selectedImageNamed:@"navButtonPressedBG.png" | |
| leftCapWidth:6.0f | |
| edgeInsets:UIEdgeInsetsMake(0.0f, 5.0f, 0.0f, 5.0f) | |
| title:title | |
| target:target | |
| selector:selector]; | |
| } | |
| + (id) customBackButtonWithTitle:(NSString *)title target:(id)target selector:(SEL)selector { | |
| return [self customButtonWithImageNamed:@"backButtonBG.png" | |
| selectedImageNamed:@"backButtonPressedBG.png" | |
| leftCapWidth:12.0f | |
| edgeInsets:UIEdgeInsetsMake(0.0f, 11.0f, 0.0f, 5.0f) | |
| title:title | |
| target:target | |
| selector:selector]; | |
| } | |
| @end | |
| UIBarButtonItem* logoutButton = [UIBarButtonItem customBarButtonWithTitle:@"Logout" target:self selector:@selector(logout)]; | |
| self.navigationItem.rightBarButtonItem = logoutButton; | |
| - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { | |
| if([navigationController.viewControllers count ] > 1) { | |
| UIViewController* backViewController = [navigationController.viewControllers objectAtIndex:(navigationController.viewControllers.count - 2)]; | |
| NSString* backText = backViewController.title; | |
| UIBarButtonItem* newBackButton = [UIBarButtonItem customBackButtonWithTitle:backText target:navigationController selector:@selector(popViewControllerAnimated:)]; | |
| viewController.navigationItem.leftBarButtonItem = newBackButton; | |
| viewController.navigationItem.hidesBackButton = YES; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment