方式一:
// 去掉系统默认自带的文字(上一个控制器的title),修改系统默认的样式(一个蓝色的左箭头)为自己的图片
-(void)customBarButtonItem {
// 去掉文字
// 自定义全局的barButtonItem外观
UIBarButtonItem *barButtonItemAppearance = [UIBarButtonItem appearance];
// 将文字减小并设其颜色为透明以隐藏
[barButtonItemAppearance setTitleTextAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:0.1], NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal];
// 设置图片
// 获取全局的navigationBar外观
UINavigationBar *navigationBarAppearance = [UINavigationBar appearance];
// 获取原图
UIImage *image = [[UIImage imageNamed:@"goBack"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
// 修改navigationBar上的返回按钮的图片,注意:这两个属性要同时设置
navigationBarAppearance.backIndicatorImage = image;
navigationBarAppearance.backIndicatorTransitionMaskImage = image;
}
这种方式全局把UIBarButtonItem的title给隐藏了,导致新建的UIBarButtonItem的title不显示。如果要显示title,只能通过button自定义UIBarButtonItem。
方式二:
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] init];
backItem.title = @"";
//主要是以下两个图片设置
self.navigationController.navigationBar.backIndicatorImage = [UIImage imageNamed:@"backPic"];
self.navigationController.navigationBar.backIndicatorTransitionMaskImage = [UIImage imageNamed:@"backPic"];
self.navigationItem.backBarButtonItem = backItem;
仅仅修改了backBarButtonItem,将上面是代码放到控制器的基类中可以实现全局的替换。
网友评论