美文网首页iOS
iOS11设置返回按钮title为空

iOS11设置返回按钮title为空

作者: willwj | 来源:发表于2017-09-22 14:53 被阅读3904次

iOS11之前设置返回按钮的文字偏移来使title为空,iOS11失效了。

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)
                                                         forBarMetrics:UIBarMetricsDefault];

iOS11的导航栏结构有比较大的改变,可以创建一个UIView的类目加入如下代码,放入工程就可以使iOS11上返回按钮title为空。(记得导入pod 'JRSwizzle')

+ (void)load
{
    if (@available(iOS 11, *)) {
        [NSClassFromString(@"_UIBackButtonContainerView")     jr_swizzleMethod:@selector(addSubview:) withMethod:@selector(iOS11BackButtonNoTextTrick_addSubview:) error:nil];
    }
}
- (void)iOS11BackButtonNoTextTrick_addSubview:(UIView *)view
{
    view.alpha = 0;
    if ([view isKindOfClass:[UIButton class]]) {
        UIButton *button = (id)view;
        [button setTitle:@" " forState:UIControlStateNormal];
    }
    [self iOS11BackButtonNoTextTrick_addSubview:view];
    
}

以上方法不要用了,iOS11.3之后会出现BUG。Push 或 Pop Animated为YES时内存会无限暴涨直至崩溃。
可使用以下代码替代:

    [[UIBarButtonItem appearance] setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:0.1], NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal];

相关文章

网友评论

  • Haha_kd:[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-1000, 0)
    forBarMetrics:UIBarMetricsDefault];
    横向隐藏就行了,左或者右都行
    能量达人儿:纵横的话会导致图标下移,横线的方式可以的:+1:
  • FengxinLi:请问我把文件导入到工程中 运行时[_UIBackButtonContainerView jr_swizzleMethod:withMethod:error:]: unrecognized selector sent to class 0x1b00d0aa0' 抱这个错误是怎么回事呢?
    willwj:@FengxinLi 你加我QQ看下是什么问题吧 369206406
    FengxinLi:@willwj 我自定义的返回按钮 但是没有文字。现在ios11上面按钮下移了,但是我按照你说的 还是报上面的错误
    willwj:创建UIView的类目,使用pod 或者 直接拖入 JRSwizzle ,然后在类目的.m文件里引入 #import "JRSwizzle.h"。
  • FengxinLi:请问一下 JRSwizzle 会被拒不?
    willwj:@FengxinLi 可以的
    FengxinLi:@willwj 直接倒入 JRSwizzle的h,和m文件可以用吗?
    willwj:不会的

本文标题:iOS11设置返回按钮title为空

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