UINavigationBar titleTextAttributes - 在转换期间不应用

UINavigationBar titleTextAttributes - not applied during transitions

我已经为我的导航栏标题提供了更大的字体,如下所示:

let navBarTitleTextAttributes = [
    NSAttributedString.Key.font: UIFont.systemFont(ofSize: 24.0, weight: .black)
]
UINavigationBar.appearance().titleTextAttributes = navBarTitleTextAttributes

但是,当在视图控制器堆栈中向后导航时,前一个视图控制器上的标题始终默认为正常大小,直到动画完成,然后它会弹回到更大的字体。这就是我的意思:

这使得使用更大的字体完全不可接受,我想知道如果导航栏标题在转换期间始终默认为系统 font/size,为什么我们还要提供该选项。有解决方法吗?即让之前的视图控制器的标题在过渡期间也以较大的字体显示?

根据您提供的信息无法重现。使用您提供的全部且仅使用的信息,这是我所看到的:

所以我的猜测是您自己正在做一些您没有告诉我们的事情,即在弹出动画开始之前将导航栏的标题文本属性设置回默认值。

嗯,好消息和坏消息。好消息是我发现这是由另一行代码引起的:

UILabel.appearance().font = defaultFont

显然这会以某种方式影响导航栏标题字体,仅当在导航堆栈中向后过渡时才会如此。

坏消息是 UIAppearance 上没有 appearanceWhenNotContainedIn class 方法。因此,您可以设置 UILabel 或 UINavigationBar 的一般外观,但不能同时设置两者。