最近公司有个老项目,需要修改字体大小。遇到一个问题:在设置中修改字体大小后,返回我的页面,字体大小并没有改。
刚开始一直想着怎么去刷新页面,网上也看了很多,都没有切中要害。
后来,突然想到,不用去刷新页面,而是去重新设置一下字体大小。
设置中修改字体大小后,发出通知
NotificationCenter.default.post(name: NSNotification.Name.init("FontChangeNotification"), object: nil)
在我的页面,注册通知
NotificationCenter.default.addObserver(self, selector: #selector(didReceivedFontChangeNotification), name: NSNotification.Name("FontChangeNotification"), object: nil)
移除:
deinit {
NotificationCenter.default.removeObserver(self, name: NSNotification.Name("FontChangeNotification"), object: nil)
}
修改字体大小
@objc func didReceivedFontChangeNotification() {
nameLabel.font = .systemFont(ofSize: CGFloat(18 * getFontScale()))
levelLabel.font = .systemFont(ofSize: CGFloat(12 * getFontScale()))
levelLeftTopLabel.font = .systemFont(ofSize: CGFloat(20 * getFontScale()))
level_rightTop_label.font = .systemFont(ofSize: CGFloat(18 * getFontScale()))
level_left_bottom_label.font = .systemFont(ofSize: CGFloat(12 * getFontScale()))
empiricValueLabel.font = .systemFont(ofSize: CGFloat(13 * getFontScale()))
headerLabel1.font = .systemFont(ofSize: CGFloat(15 * getFontScale()))
headerLabel2.font = .systemFont(ofSize: CGFloat(15 * getFontScale()))
collectionView1.reloadData()
collectionView2.reloadData()
logoutBtn.titleLabel?.font = .systemFont(ofSize: CGFloat(15 * getFontScale()))
}