我使用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
的行为与其他观点不同?
为什么删除和替换它们会解决问题?