美文网首页学习iOS技术iOS干货ios开发
用简单的方法设置UINavigation的全局返回样式BackB

用简单的方法设置UINavigation的全局返回样式BackB

作者: iHTCboy | 来源:发表于2015-02-13 20:36 被阅读4239次

    今天在做毕业设计时,想到要设置全局的返回样式,只要图片,不要文字,形式如下:

    网上有很多种方法,但是我都认为太麻烦,所以看能不能简单的设置一个全局样式

    开始时,我设置了如下:

    UINavigationBar * navigationBar = [UINavigationBar appearance];

    //返回按钮的箭头颜色

    [navigationBar setTintColor:[UIColor whiteColor]];

    //设置返回样式图片

    UIImage *image = [UIImage imageNamed:@"navigationbar_back"];

    image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

    navigationBar.backIndicatorImage = image;

    navigationBar.backIndicatorTransitionMaskImage = image;

    以上代码实现了全局的形式如下:

    讨论:全局下,箭头都是自定义样式了,但是文字怎么去掉?网上的方法很多,有用到时在设置,或全局的利用运行时重载方法,问题都是没有达到简单的方法,后来找到这样一个方法如下:

    利用全局的UIBarButtonItem,然后巧妙的设置文字的偏移值,达到“隐藏”效果

    UIBarButtonItem *buttonItem = [UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil];

    UIOffset offset;

    offset.horizontal = -500;

    [buttonItem setBackButtonTitlePositionAdjustment:offset forBarMetrics:UIBarMetricsDefault];

    不知道这个方法是不是最简单,和这个方法是不有什么“bug”,能力有限,欢迎指点!

    最后效果如下:

    ~nice

    - 如果有什么疑问,可以在评论区一起讨论;

    - 如果有什么不正确的地方,欢迎指导!

    > 注:本文首发于iHTCboy's blog,如若转载,请注明来源。

    相关文章

      网友评论

      • XTK_iOS:你好,图片的位置可以设置吗,让它距离左边多点
        Simba_LX:@iHTCboy 哪个方法可以设置图片位置,我试的都不行
        iHTCboy:@iOS1994 可以的,你设置数字小点就好。
      • liuyanhongwl:一级页面设置了title(建议用长一点的测试)后, 在二级页面看,二级页面的title会有问题(被莫名的东西挤歪了)
      • 昨夜雨轻栏:这是我在一个UIVIewController基类里写的,作用是继承于它的VIewController只要NAV不为空,navigationBar返回左键样式是统一的。
        - (void)viewDidLoad {
        [super viewDidLoad];
        // 更改左按键样式,并设置navigationBar.barTintColor
        if (self.navigationController) {
        // 自定义左键,贴图,并重写返回方法
        UIButton *leftBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        leftBtn.frame = CGRectMake(0, 0, 30, 30);
        [leftBtn setImage:[UIImage imageNamed:@"btn_back"] forState:UIControlStateNormal];
        [leftBtn addTarget:self action:@selector(leftBtnClick) forControlEvents:UIControlEventTouchUpInside];
        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:leftBtn];
        self.navigationController.navigationBar.barTintColor = GWColor(211, 0, 40);

        }
        }


        /**
        * 重新实现左按键返回方法
        */
        - (void)leftBtnClick
        {
        if (self.navigationController) {
        [self.navigationController popViewControllerAnimated:YES];
        }
        }
      • 昨夜雨轻栏:我的做法是写了一个NAV控制器父类,重写左键和方法
        昨夜雨轻栏:这个可以写多个基类满足各种返回左键需求。。。
        iHTCboy:@昨夜雨轻栏 嗯,谢谢指导。现在我也在自定义,灵活性大一点,但我写的总觉得灵活不够,求共享代码🙏
      • iHTCboy:@我叫大大虾米 谢谢提示,请看我新写的文章,我从新用MD格式写的
      • 我叫大大虾米:你的排版能优化下嘛 :sweat:

      本文标题:用简单的方法设置UINavigation的全局返回样式BackB

      本文链接:https://www.haomeiwen.com/subject/oeasxttx.html