swift实现动态字体
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift实现动态字体相关的知识,希望对你有一定的参考价值。
参考技术A 手动设置系统字体大小,App里面的字体能跟随发生变化,并有最大最小字体限制。借助runtime,在app启动的时候交换方法实现。
特点:需要重启app才能生效。无侵入,只需要添加一个UIFont分类,并在appdelegate里面调用交换方法。对整体项目改动小。
① App内设置字体大小,选择字体后,发送通知。切回到你需要改变的界面上时,在收到通知的方法里改变当前界面字体。(微信)
② 调整系统字体大小,切换到App内,字体大小自动更改,用DynamicType实现(QQ)
特点:app内实时刷新。可以整体替换,第三方重新pod,但项目整体改动较多
③ 保存字体大小到本地,所有用到字体的地方实时获取或刷新
采用:app内实时刷新
2.1 整体全部手动替换,搜索所有的systemFont,改为xx_systemFont,第三方重新pod,但项目整体改动较多,有风险
2.2 几个核心页面做下适配,其他不管
采用:6个核心页面做下适配
添加一个UIFont分类,更改systemFont类方法的实现
1.注册一个字体改变的通知。选择字体后,发送通知。切回到你需要改变的界面上时,在收到通知的方法里改变当前界面字体。(微信)
2.用DynamicType实现(QQ)
效果:调整系统字体大小,切换到App内,字体大小自动更改
缺点:字体大小只能是给定的10种类型之一
3.保存字体大小到本地,所有用到字体的地方实时获取或刷新
全局替换系统字体方法,会有个问题:很多地方view大小没做适配。采用适配4、5个核心页面的方案。
实现方法:给UIFont分类添加新的方法,需要适配的地方把systemFont改为xx_systemFont即可
特点:哪里需要适配就改哪里,灵活度和自由度自己控制
1、Method 'initialize()' defines Objective C class method 'initialize', which is not permitted by Swift
Swift4开始废弃load方法和initital方法了,写个类方法交换实现,然后直接在appdelegate里面调用类方法即可。UIButton可行,但是UIFont不可行(UIFont是类方法,写错了就不生效)。
2、UIFont的systemFont设置了没生效,因为systemFont是类方法,写错了
3、百度到的一些方案遇到些问题UILabel的font方法获取不到,willMove(toSuperview:)会出现UIButtonLabel的情况,属性字符串的兼容情况等。
ios10的一些玩意儿:Dynamic Type
Swift黑魔法 - Runtime
Swift 3 Eureka Forms 更改按钮行字体颜色
【中文标题】Swift 3 Eureka Forms 更改按钮行字体颜色【英文标题】:Swift 3 Eureka Forms change button row font color 【发布时间】:2017-03-13 21:13:32 【问题描述】:我正在使用 Swift 3 创建一个 IOS 应用程序并实现 Eureka Forms。作为表单的一部分,我有一个用作删除按钮的按钮行。因此,我希望将文本颜色更改为白色。
我尝试了以下方法,但是单元格文本颜色会引发错误。关于我如何正确实现这一点的任何想法?
+++ Section("Delete Item")
<<< ButtonRow()
$0.title = "Delete"
.cellSetup() cell, row in
cell.backgroundColor = UIColor.red
cell.textLabel?.textColor = UIColor.whiteColor()
.onCellSelection cell, row in self.deleteItem()
【问题讨论】:
我的回答对你有帮助吗? 【参考方案1】:你很接近,你必须使用tintColor
而不是textColor
,使用这个代码
<<< ButtonRow()
$0.title = "Delete"
.cellSetup() cell, row in
cell.backgroundColor = UIColor.red
cell.tintColor = UIColor.white
希望对你有帮助
【讨论】:
嘿,谢谢你的想法,对不起。我已经离开我的开发机器几天了,但希望今晚回来尝试一下 @MichaelMoulsdale 好的,让我知道以上是关于swift实现动态字体的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xcode 中增加字体大小以实现 swift [重复]
uitableviewcell 具有动态高度或减小字体大小以将多行放入一个单元格