ios 动态字体

目前主流app都已支持动态字体,假如我们的app不支持,用户在不同app之间切换的时候就会感觉很唐突,甚至会因为阅读体验的问题而之间删除

支持动态字体

iOS App如何支持动态字体呢?我们需要为显示文本的组件,如UILabel、UITextView、UIButton指定自动调整大小的字体,比如为UILabel增加动态字体支持的代码。

label.font = UIFont.preferredFont(forTextStyle: .body)
        label.adjustsFontForContentSizeCategory = true

首先,我们使用了UIFont.UITextStyle的.body来创建一个UIFont赋值给label的font属性,然后把改Label的adjustsFontForContentSizeCategory设置为true让其响应用户的动态字体设置。这个属性默认就为true,假如我们不想让文本自动支持动态字体,克设置为false。目前ios系统为我们提供了Body等11种字体风格,其他可在官方《Human Interface Guidelines》文档查看他们的规范

为第三方字体库加入动态字体支持

绝大多数情况下,我们应该使用iOS系统提供的内置字体库,但也有一些例外,例如使用自定义字体库来。第三方字体库支持代码如下

guard let theThirdPartyFont = UIFont(name:"theThirdPartyFont",size: UIFont.labelFontSize) else {
            return
        }
        label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: theThirdPartyFont)
        label.adjustsFontForContentSizeCategory = true

第一步是通过传递字体库的名字,来加载并初始化类型为UIFont的对象customFont。
第二步是传入字体风格.headline,来初始化一个UIFontMetrics的对象。

第三步是把customFont传入scaledFont(for font: UIFont) -> UIFont方法,并把返回值赋给 Label 的font。这样label就能即使用第三方的字体库又能支持动态字体

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值