为什么UIBarButtonItem标题字体不会从应用程序范围的默认字体设置,除非删除和替换?

时间:2017-08-10 17:36:57

标签: ios swift fonts uibarbuttonitem uitoolbar

我使用UILabel扩展程序设置应用程序范围的默认字体。

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"

UIBarButtonItems中的UIToolbar外,所有文字均采用默认字体。

如果app使用工具栏离开视图控制器并返回,则条形按钮字体将设置为默认值。

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

通过反复试验,考虑到该评论,我发现如果我删除并替换barButtonItems中工具栏中的viewDidAppear(),则按钮采用默认字体。

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

    let allButtons = toolbar.items
    toolbar.setItems([], animated: false)
    toolbar.setItems(allButtons, animated: true)
}

但如果在viewWillAppear()viewDidLoad()中删除并替换了按钮,则无效。如果删除的动画设置为true,它也不起作用。

重置工具栏中的按钮与动画设置为true还是false无关。

所有按钮,标签textViews都是在故事板中创建的,除了栏按钮项目外,所有按钮都采用默认字体,这就是我要问的原因。

为什么barButtonItems的行为与其他观点不同?

为什么删除和替换它们会解决问题?

0 个答案:

没有答案