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页面就会刷新字体大小
这些Swift代码扩展了UILabel,UIButton,UITextField和UITextView,定义了`applyGlobalTextStyle`方法,用于根据系统设定的文字样式调整组件的字体大小。方法首先获取默认字体,然后使用UIFontMetrics进行缩放,确保字体在不同内容大小类别下自适应。应用此方法的组件会自动根据系统字体变化更新显示。
2524

被折叠的 条评论
为什么被折叠?



