【Swift】自定义UIFont字号自适应屏幕
为方便项目中统一调用不同的字号,及字号大小自适应屏幕,对UIFont进行类方法扩展
//
// UIFont+myFontExt.swift
// Comic
//
// Created by LRS on 2022/4/17.
//
import UIKit
let SCREEN_WIDTH = UIScreen.main.bounds.width
let SCREEN_HEIGHT = UIScreen.main.bounds.height
///< 适配,屏幕宽高适配比例,岭南以 iPhone6 模板设计
let kAutoSizeScale_X = ((SCREEN_HEIGHT == 667.0) ? 1.0 : (SCREEN_WIDTH / 375.0))
let kAutoSizeScale_Y = ((SCREEN_HEIGHT == 667.0) ? 1.0 : (SCREEN_HEIGHT / 667.0))
/**
*floor 向下取整
*ceil 向上取整
***/
///< 横向自适应拉伸
func kAutoConvertWithScreenW_Value(_ value:CGFloat) -> CGFloat {
return floor(value * kAutoSizeScale_X)
}
///< 纵向向自适应拉伸
func kAutoConvertWithScreenH_Value(_ value:CGFloat) -> CGFloat {
return floor(value * kAutoSizeScale_Y)
}
extension UIFont {
///< 自适配 字体大小
class func kAutoSystemFont(_ size:CGFloat) -> UIFont {
return .systemFont(ofSize: kAutoConvertWithScreenW_Value(size))
}
///< 自适配 加粗 字体大小
class func kAutoBoldFont(_ size:CGFloat) -> UIFont {
return .boldSystemFont(ofSize: kAutoConvertWithScreenW_Value(size))
}
///< 自适配 name 字体大小
class func kAutoNameFont(_ name:String, _ size:CGFloat) -> UIFont {
return UIFont(name: name, size: kAutoConvertWithScreenW_Value(size)) ?? kAutoSystemFont(size)
}
///< 自适应 12号字体
class var autoFont_12:UIFont{
get{
return kAutoSystemFont(12.0)
}
}
///< 自适应 14号字体
class var autoFont_14:UIFont{
get{
return kAutoSystemFont(14.0)
}
}
///< 自适应 16号字体
class var autoFont_16:UIFont{
get{
return kAutoSystemFont(16.0)
}
}
///< 自适应 18号字体
class var autoFont_18:UIFont{
get{
return kAutoSystemFont(18.0)
}
}
///< 自适应 20号字体
class var autoFont_20:UIFont{
get{
return kAutoSystemFont(20.0)
}
}
}
使用方法
let btn = UIButton(type: .custom)
//autoFont_14定义的是类属性直接类名UIFont调用就可以
btn.titleLabel?.font = .autoFont_14
let titleLab = UILabel()
//定义的是类方法直接类名UIFont调用就可以
titleLab.font = .kAutoBoldFont(18)