美文网首页iOS用到的iOS程序猿
iOS 自定义导航栏滑动返回取消后出现三个小点(标题栏错乱)解决

iOS 自定义导航栏滑动返回取消后出现三个小点(标题栏错乱)解决

作者: 這Er | 来源:发表于2019-02-14 19:16 被阅读3次

    同事发现在iOS10系统操作滑动返回,然后半路取消后,导航栏会多出三个小点


    image.png

    解决方法:

    viewWillAppear: 方法里面加上几行代码,将title置为空字符串:

    - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        
        if (@available(iOS 11.0, *)) {
            self.navigationItem.hidesBackButton = YES;
        } else {
            self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
            self.navigationItem.hidesBackButton = YES;
        }
    }
    
    

    原因探究:

    查看了下图层,明显就是系统默认的返回按钮么:
    UINavigationBar -> UINavigationItemButtonView -> UILabel

    image.png

    看到backBarButtonItem(UINavigationItemButtonView) 的宽高都是0,那三个点就是内部的UILabel造成的,因为宽高不够所以显示了... ,这个label的字是系统自动取的上个控制器的title,所以不使用系统自己创建的backBarButtonItem, 自己创建一个没有title的就可以了

    有些文章里面写的是直接判断UINavigationItemButtonView 的class类型然后粗暴的隐藏掉,感觉不是最好的解决方法

    知识点:

    1. 当前控制器展示的backBarButtonItem,是上个控制器的;所以看到上面的label展示的是<密码管理>, 这是堆栈中<修改登录密码>的上个页面
    2. customView在backBarButtonItem中是不生效的

    系统的注释:当此属性为nil时,导航项使用其title属性中的值创建适当的后退按钮。


    image.png

    相关文章

      网友评论

        本文标题:iOS 自定义导航栏滑动返回取消后出现三个小点(标题栏错乱)解决

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