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

来源:互联网 发布:python电影推荐系统 编辑:程序博客网 时间:2024/05/22 01:27

在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
原创粉丝点击