重载 UINavigationController 设置左侧返回按钮的文字为图片
2014-04-17 00:44
351 查看
UINavigationController
导航栏控制器的左侧返回按钮如果需要设置成图片,仅使用系统的是无法实现的,需要重载系统的导航栏控制器,在控制器推出之前替换掉leftBarButtonItem才行.
注:以下链接的这个哥们对NavigationViewController所有能做的定制都解说了
http://beyondvincent.com/blog/2013/11/03/120-customize-navigation-status-bar-ios-7/#5
源码如下:
CustomNavigationViewController.h + CustomNavigationViewController.m
导航栏控制器的左侧返回按钮如果需要设置成图片,仅使用系统的是无法实现的,需要重载系统的导航栏控制器,在控制器推出之前替换掉leftBarButtonItem才行.
注:以下链接的这个哥们对NavigationViewController所有能做的定制都解说了
http://beyondvincent.com/blog/2013/11/03/120-customize-navigation-status-bar-ios-7/#5
源码如下:
CustomNavigationViewController.h + CustomNavigationViewController.m
#import <UIKit/UIKit.h> @interface CustomNavigationViewController : UINavigationController @end
#import "CustomNavigationViewController.h" #pragma mark - 支持ARC与非ARC #if __has_feature(objc_arc) #define RELEASE(obj) #define AUTO_RELEASE(obj) #else #define Release(obj) [obj release] #define Autorelease(obj) [obj autorelease] #endif //判断是否是iOS7 #define iOS7 \ ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) @interface CustomNavigationViewController () @end @implementation CustomNavigationViewController #pragma mark - 重载父类进行改写 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { //先进入子Controller [super pushViewController:viewController animated:animated]; //替换掉leftBarButtonItem if (viewController.navigationItem.leftBarButtonItem== nil && [self.viewControllers count] > 1) { viewController.navigationItem.leftBarButtonItem =[self customLeftBackButton]; } } #pragma mark - 自定义返回按钮图片 -(UIBarButtonItem*)customLeftBackButton{ UIImage *image = [UIImage imageNamed:@"back.png"]; UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; backButton.frame = CGRectMake(0, 0, image.size.width, image.size.height); [backButton setBackgroundImage:image forState:UIControlStateNormal]; [backButton addTarget:self action:@selector(popself) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; Autorelease(backItem); return backItem; } #pragma mark - 返回按钮事件(pop) -(void)popself { [self popViewControllerAnimated:YES]; } #pragma mark - 用图片设置导航背景 + (void)initialize { //取出设置主题的对象 UINavigationBar *navBar = [UINavigationBar appearance]; //设置导航栏的背景图片 NSString *navBarBg = nil; if (iOS7) { navBarBg = @"NavBar64"; navBar.tintColor = [UIColor whiteColor]; } else { navBarBg = @"NavBar"; [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; } [navBar setBackgroundImage:[UIImage imageNamed:navBarBg] forBarMetrics:UIBarMetricsDefault]; //标题颜色 [navBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}]; } @end
相关文章推荐
- 重载 UINavigationController 设置左侧返回按钮的文字为图片
- 重载 UINavigationController 设置左侧返回按钮的文字为图片
- ios移动开发navigationItem自带的返回按钮设置成自定义图片或者不显示父视图的标题文字
- ios开发如何让navigationItem自带的返回按钮设置成图片或者不显示文字
- 设置UIImagePickerController里面的返回按钮的样式图片
- 将返回按钮的文字position设置不在屏幕上显示
- IOS开发OC 如何将导航栏左侧系统自动生成的返回按钮的文字去掉,只保留小于号"<"图案
- UINavigationControll采用pushViewController后如何去掉左边的返回按钮
- [一句秒懂]按钮button同时设置图片和文字
- UITabBarController设置选中时图片和文字的颜色
- IOS开发之UIButton同时设置图片文字以及出发按钮时文字图片的切换
- iOS 设置导航栏 返回按钮文字隐藏
- 从一个界面push到下一界面左上角有个返回按钮,如何才能设置那个按钮显示的文字呢?
- 设置NavigationBar导航栏中返回按钮(BackBarButtonItem)和BarButtonItem文字
- 设置按钮文字在图片正下方
- ios UINavigationController 修改返回按钮
- iOS Button 按钮 设置图片在文字的右边
- 设置button的样式,使得按钮的图片在上面,文字在图片的下面
- UINavigationController以及UITabBarController背景图片和文字的设置
- ios设置导航栏背景图片、返回按钮背景、标题颜色等等