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

Это полезно, чтобы все было напечатано строго, поэтому вы получите бесплатную автозаполнение и избегаете опечаток.