Как установить системный шрифт для CATextLayer()?
За UILabel
Я могу установить системный шрифт как:
label.font = UIFont.systemFontOfSize(18, weight: UIFontWeightMedium)
За CATextLayer
Есть ли аналогичный способ установить системный шрифт вместо того, чтобы дать имя шрифта напрямую?
textLayer = CATextLayer()
textLayer.font = ??? // instead of CTFontCreateWithName("HelveticaNeue-Bold", 18, nil)
1 ответ
Решение
Ответ - нет, но если вам надоели имена шрифтов системы типов, вы можете заключить их в простую функцию:
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)
Это полезно, чтобы все печаталось строго, поэтому вы получите бесплатное автозаполнение и избежите опечаток.