Ios 为什么uibarbuttonite标题字体赢得';是否从应用程序范围的默认字体设置,除非删除并替换?

Ios 为什么uibarbuttonite标题字体赢得';是否从应用程序范围的默认字体设置,除非删除并替换?,ios,swift,fonts,uibarbuttonitem,uitoolbar,Ios,Swift,Fonts,Uibarbuttonitem,Uitoolbar,我使用UILabelextension设置应用程序范围内的默认字体 extension UILabel { var defaultFontName : String { get { return self.font.fontName } set { self.font = UIFont(name: newValue, size: self.font.pointSize)} } } 并在AppDelegate中设置默认字体 UILabel.

我使用
UILabel
extension设置应用程序范围内的默认字体

extension UILabel {
    var defaultFontName : String {
        get { return self.font.fontName }
        set { self.font = UIFont(name: newValue, size: self.font.pointSize)}
     }   
}
并在
AppDelegate
中设置默认字体

UILabel.appearance().defaultFontName = "HelveticaNeue-CondensedBlack"
除了
UIToolbar
中的
uiBarButtonims
之外,所有文本在启动时都采用默认字体

如果应用程序脱离带有工具栏的视图控制器并返回,则工具栏按钮字体将设置为默认字体

我在另一个SO问题中读到一条评论,该问题描述了设置应用程序范围的默认字体,一些视图需要删除和替换以采用默认字体。我再也找不到那个评论了

经过反复试验,我发现如果我删除并替换
viewdispect()
工具栏中的
barbuttonims
,按钮将采用默认字体

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    let allButtons = toolbar.items
    toolbar.setItems([], animated: false)
    toolbar.setItems(allButtons, animated: true)
}
但是,如果在
viewwillbeen()或
viewDidLoad()中移除和替换按钮,则该功能不起作用。如果移除的动画设置为true,则该选项也不起作用

重置工具栏中的按钮时,无论动画设置为true还是false,都不重要

所有的按钮、标签、
textview
都是在故事板中创建的,并且在启动时都采用默认字体,除了条形按钮项,所以这就是我问的原因

为什么
barButtonItems
的行为与其他视图不同

为什么拆卸和更换它们可以解决问题