ios跟随系统设置字体大小

news/2024/7/20 20:36:52 标签: ios
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页面就会刷新字体大小


http://www.niftyadmin.cn/n/468481.html

相关文章

考虑储能的电价套利收益模型研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

超详细!完整版!基于spring对外开放接口的签名认证方案(拦截器方式)

文章目录 1、场景2、接口防御措施3、签名认证逻辑4、签名算法规则5、代码示例1、sign工具类2、定义拦截器3、生成accessKey、secretKey 工具类4、signInterceptor类5、SignInterceptor 获取body里参数后,接口的controller会获取不到body的参数了,会报错 …

【Java】JVM学习(三)

JVM的整体内存结构 本地方法栈 本地方法栈跟 Java 虚拟机栈的功能类似,Java 虚拟机栈用于管理 Java 函数的调用,而本地方法栈则用于管理本地方法的调用。但本地方法并不是用 Java 实现的,而是由 C 语言实现的(比如Object.hashcode方法)。 …

【网络进阶】redis、memcached、nginx网络组件(二)

文章目录 1. reactor1.1 io多路复用1.2 非阻塞io1.3 one eventloop per thread1.4 reactor为什么搭配非阻塞io1.5 是不是io多路复用一定要搭配非阻塞io 2. redis2.1 环境2.2 Redis为什么要使用单Reactor2.3 Redis怎么处理Reactor2.4 Redis针对Reactor做了哪些优化 1. reactor …

OSG三维渲染引擎编程学习之八十三:“第八章:OSG文字” 之 “8.2 字体Font”

目录 第八章 OSG文字 8.2 osgText::Font字体 第八章 OSG文字 适当的文字信息对于显示场景信息是非常重要的。在OSG中,osgText提供了向场景中添加文字的强大功能,由于有第三方插件FreeType的支撑,可完全支持TrueType字体。 TrueType是由AppleComputer公司和Microsoft公司联…

uni-app 的使用体验总结

框架简介 uni-app 是一个使用 Vue.js (opens new window)开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)…

买苹果c++

小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。 输入描述: 输入…

前端实现报表批量导出(html-to-image+jspdf)

前端实现报表批量导出(html-to-imagejspdf) 1.问题描述 起初只是一个简单的报表预览和打印功能,这里使用的是vue-print-nb插件来实现打印部分页面的功能。选择报表点击查看,然后根据报表的id去获取报表的详细数据,渲…