美文网首页ios开发布局iOS集合
iOS - Swift自定义UIFont字号自适应屏幕

iOS - Swift自定义UIFont字号自适应屏幕

作者: 俺不是大佬儿 | 来源:发表于2022-04-19 18:24 被阅读0次

【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)

\color{gray}{欢迎大佬儿来指正纠错,共同学习😏!!}

相关文章

网友评论

    本文标题:iOS - Swift自定义UIFont字号自适应屏幕

    本文链接:https://www.haomeiwen.com/subject/zmxeertx.html