如何为CATextLayer()设置系统字体?

6

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

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

对于 CATextLayer,是否有设置系统字体的类似方式,而不是直接给出字体名称的方法?
textLayer = CATextLayer() 
textLayer.font = ??? // instead of CTFontCreateWithName("HelveticaNeue-Bold", 18, nil)

使用 CTFontCreateUIFontForLanguage 并将 CTFontUIFontType 设置为 System - juniperi
1个回答

11
答案是否定的,但如果你对类型系统字体名称感到无聊,你可以将其包装在一个简单的函数中:
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, size, nil)
    }
}

使用非常简单

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

这很有用,可以使一切都强制类型化,这样您将免费获得自动完成并避免拼写错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接