objective-c – 如何为CATextLayer()设置系统字体?

对于UILabel,我可以将系统字体设置为:

label.font = UIFont.systemFontOfSize(18,weight: UIFontWeightMedium)

对于CATextLayer,是否有类似的方法来设置系统字体而不是直接给出字体名称

textLayer = CATextLayer() 
textLayer.font = ??? // instead of CTFontCreateWithName("HelveticaNeue-Bold",18,nil)

解决方法

答案是否定的,但是如果你对类型系统字体名称感到厌倦,你可以用一个简单的函数包装:

func CTFontCreateSystemFontWithSize(size: CGFloat) -> CTFontRef {
    return CTFontCreateWithName(UIFont.systemFontOfSize(1).fontName,size,nil)
}

对于自定义字体,我喜欢枚举字体系列,如下所示:

enum MyFontFamily: String {
    case Thin = "MyFont-Thin"
    case Light = "MyFont-Light"
    case Medium = "MyFont-Medium"
    case Bold = "MyFont-Bold"

    func font (size: CGFloat) -> UIFont? {
        return UIFont(name: self.rawValue,size: size)
    }

    func CTFont (size: CGFloat) -> CTFontRef {
        return CTFontCreateWithName(self.rawValue,nil)
    }
}

用法很简单

textLayer.font = MyFontFamily.Medium.CTFont(18.0)

这对于保持所有内容强有力非常有用,因此您可以免费获得自动完成功能并避免拼写错误.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...