Как установить системный шрифт для 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)

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

Другие вопросы по тегам