如何优雅的使UIFont 动态 加粗 Or 斜体

在开发UI的过程中,必不可少的会和UIFont打交道;

当我们要使用系统常规的UIFont加粗或者斜体的时候,就很简单;

let boldFont = UIFont.boldSystemFont(ofSize: 16)
let italicFont = UIFont.italicSystemFont(ofSize: 16)

但是,很明显,这里的加粗Or斜体是固定Size的;那如何动态的改变字体Size,而仍然拥有Bold & Italic?

//下面的代码将为您提供一个带有.body文本样式的缩放字体。但是,无法指定您需要带有正文样式的粗体或斜体字体。
label.font = UIFont.preferredFont(forTextStyle: .body)
label.adjustsFontForContentSizeCategory = true

下面的Extensions可以很容易地将该特征添加到缩放字体中。

import UIKit

extension UIFont {
    func withTraits(traits:UIFontDescriptorSymbolicTraits) -> UIFont {
        let descriptor = fontDescriptor.withSymbolicTraits(traits)
        return UIFont(descriptor: descriptor!, size: 0) //size 0 means keep the size as it is
    }

    func bold() -> UIFont {
        return withTraits(traits: .traitBold)
    }

    func italic() -> UIFont {
        return withTraits(traits: .traitItalic)
    }
}

扩展分为两部分。withTraits函数更像是一个助手函数,它将采用我们正在扩展的字体,并将指定的特征(加粗 斜体)应用于它。大小参数设置为零,这意味着不要更改字体大小与当前大小。bolditalic两种功能是方便函数。

使用:

现在,如果我想要一个缩放的字体,并想让它变粗变斜体,就这么简单:

let boldFont = UIFont.preferredFont(forTextStyle: .headline).bold()
let italicFont = UIFont.preferredFont(forTextStyle: .footnote).italic()

Thanks。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值