iOS全局返回按钮定制问题解决方案

iOS开发中,对于定制返回按钮,相信很多人遇到过,其方法也是很多,这篇文章记录下我的解决办法。

去掉文字类型,只显示>

这个方法是网上找来的,使用runtime完成。实现方式特别巧妙,对在某个子VC中单独设置返回按钮不会影响。创建一个UINavigationItemcategory,名为CustomBackButton,具体实现如下:

static char kCustomBackButtonKey;

@implementation UINavigationItem (CustomBackButton)

+ (void)load {

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        Method originalMethodImp = class_getInstanceMethod(self, @selector(backBarButtonItem));

        Method destMethodImp = class_getInstanceMethod(self, @selector(myCustomBackButton_backBarbuttonItem));

        method_exchangeImplementations(originalMethodImp, destMethodImp);

    });

}

- (UIBarButtonItem *)myCustomBackButton_backBarbuttonItem {

    UIBarButtonItem *item = [self myCustomBackButton_backBarbuttonItem];

    if (item) {

        return item;

    }

   

    item = objc_getAssociatedObject(self, &kCustomBackButtonKey);

    if (!item) {

        

        item = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStyleBordered target:nil action:nil];

        item.tintColor = [UIColor blackColor];

    }

    return item;

}

如果只是显示>”的话,使用runtime覆写backBarButtonItem方法就足够了。

加图片的返回按钮

但是很多情况下这样的返回按钮会显示的太粗,一般用一张图片来替代。需要注意的是,对图片的要求很高,不要过大,负责会显示错乱。实现代码是:

//设置返回样式图片

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

image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

navigationBar.backIndicatorImage = image;

navigationBar.backIndicatorTransitionMaskImage = image;

图片@3x的大小是90*90即可,具体就不给图片了。

文章来源:Hyyy's blog

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值