关于XCode14编译的在iOS16上设置title之后原生导航栏标题Label的Alpha可能为0的情况

392 阅读1分钟

问题描述

在XCode14编译的在iOS16上设置title之后原生导航栏标题Label的Alpha可能为0,此问题出现在非viewDidLoad的声明周期方法中调用

self.title = "标题"

有可能(大概率,但不是一定)导航栏标题不显示,检查层级结构发现是_UINavigationBarTitleControl下的UILabel的alpha=0,事实上text是有的。

该问题仅在从原生导航栏的隐藏->显示的页面跳转的时候才会出现。

viewDidLoad中调用title的设置无此问题。

问题主要还是出在layout阶段。

解决办法

在赋值title之后,手动调用一下layout,如下

self.title = "标题"
self.navigationController?.navigationBar.setNeedsLayout()