extension UILabel {
func applyGlobalTextStyle() {
let font = self.font ?? UIFont.preferredFont(forTextStyle: .body)
let fontMetrics = UIFontMetrics(forTextStyle: .body)
let scaledFont = fontMetrics.scaledFont(for: font)
self.font = scaledFont
self.adjustsFontForContentSizeCategory = true
}
}
extension UIButton {
func applyGlobalTextStyle() {
let font = self.titleLabel?.font ?? UIFont.preferredFont(forTextStyle: .body)
let fontMetrics = UIFontMetrics(forTextStyle: .body)
let scaledFont = fontMetrics.scaledFont(for: font)
self.titleLabel?.font = scaledFont
self.titleLabel?.adjustsFontForContentSizeCategory = true
}
}
extension UITextField {
func applyGlobalTextStyle() {
let font = self.font ?? UIFont.preferredFont(forTextStyle: .body)
let fontMetrics = UIFontMetrics(forTextStyle: .body)
let scaledFont = fontMetrics.scaledFont(for: font)
self.font = scaledFont
self.adjustsFontForContentSizeCategory = true
}
}
extension UITextView {
func applyGlobalTextStyle() {
let font = self.font ?? UIFont.preferredFont(forTextStyle: .body)
let fontMetrics = UIFontMetrics(forTextStyle: .body)
let scaledFont = fontMetrics.scaledFont(for: font)
self.font = scaledFont
self.adjustsFontForContentSizeCategory = true
}
}
上面的方法会基于自己设置的字体大小,然后根据系统设置的字体大小进行计算得到最终的字体大小。
使用方法:
lazy var subTitleLabel:UILabel = {
var label = UILabel()
label.numberOfLines = 2
label.font = UIFont.systemFont(ofSize: 14.0)
label.textColor = UIColor.color999
label.applyGlobalTextStyle()
return label
}()
label.applyGlobalTextStyle()
label.font = UIFont.systemFont(ofSize: 14.0),为初始值,系统更改字体后回到App页面就会刷新字体大小