设置 UIBarButtonItem 外观仅在延迟后起作用

Setting UIBarButtonItem appearance is only working after a delay

我正在 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)

中设置我所有的 appearance() 覆盖

其中大部分工作正常,但 UIBarButtonItem 字体更改似乎只是在延迟后才工作。以下是我的设置方式:

UIBarButtonItem.appearance().setTitleTextAttributes(
   [.font: UIFont.regularFont(size: 18)!],
   for: .normal)
UIBarButtonItem.appearance().setTitleTextAttributes(
   [.font: UIFont.regularFont(size: 18)!],
   for: .selected)

当我第一次启动该应用程序时,我看到以下内容,其中 BarButtonItem 使用的是系统字体而不是我的自定义字体。但是,标题导航栏字体是正确的: 当我导航到另一个选项卡并返回时,我看到了正确的字体:

我还尝试将外观覆盖移动到 AppDelegate 中,但这没有任何影响

多亏了this

我终于弄明白了
let navAppearance = UINavigationBarAppearance()
let bbItemAppearance = UIBarButtonItemAppearance()
bbItemAppearance.normal.titleTextAttributes = [.font: UIFont.regularFont(size: 18)!]
navAppearance.buttonAppearance = bbItemAppearance
UINavigationBar.appearance().standardAppearance = navAppearance