2016-02-18 145 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) 

這對於保持所有輸入內容非常有用,因此您可以免費獲得自動補全並避免輸入錯誤。