修改iOS导航栏系统返回按钮

方式一:

// 去掉系统默认自带的文字(上一个控制器的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,将上面是代码放到控制器的基类中可以实现全局的替换。

你可能感兴趣的:(修改iOS导航栏系统返回按钮)