iOS16系统 设置navigationbar上面的title有可能无效的bug处理

在某些业务情况下,有可能需要对viewcontroller的title进行动态设置

如果正常情况下,在vc viewdidload的方法中设置title,是没有问题的.如这样:

 

 

但一旦在vc已初始化显示完成的情况下,title还是空的时候 再去设置title,这时候标题是不会显示出来

像这样:

 

 

 

 

 

 

 

问题在于 iOS16系统下,把title置空的时候,会把titlelabel的alpha设为0了,变透明了...但重新设置title的话 却不会自动把alpha设回1(在之前的系统都没有这个问题)

 

解决这个问题的方法:

在setTitle之后 让navigationBar做一次setNeedsLayout

    @objc func setTitleAction(sender : Any?) {
        self.title = "啦啦啦啦"
        self.navigationController?.navigationBar.setNeedsLayout()
    }

 

当然也比较建议在vc的base class去rewrite setTitle 来达到全局解决的效果

这个问题目前发现只要是使用了系统的UINavigationBar就会出现

 

posted @ 2022-09-22 09:23  老徐想减肥  阅读(1789)  评论(1编辑  收藏  举报