2016-02-18 106 views
2

对于UILabel,我可以设置系统字体为:如何为CATextLayer()设置系统字体?

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

对于CATextLayer,是不是也有类似的方式来设置系统字体,而不是直接给出字体的名字吗?

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

使用'CTFontCreateUIFontForLanguage'并将'CTFontUIFontType'设置为'System'? – juniperi

回答

6

答案是否定的,但如果你是无聊关于类型的系统字体的名称,你可以在一个简单的功能包:

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) 

这对于保持所有输入内容非常有用,因此您可以免费获得自动补全并避免输入错误。