Пользовательские шрифты на игровой площадке Xcode

Я пишу макет интерфейса в коде. Поскольку это раздражает, чтобы перезагружать приложение каждый раз, когда я проверяю размер шрифта или отображаю пиксель по пикселям, я начал делать это на игровой площадке. Это очень помогает. Но я скучаю по своим обычным шрифтам.

Есть ли способ добавить пользовательские шрифты на свою игровую площадку?

Ответ 1

Сначала добавьте файл .ttf в ресурсы вашей игровой площадки. Затем вы можете загрузить шрифт следующим образом:

let cfURL = NSBundle.mainBundle().URLForResource("Proxima Nova Semibold", withExtension: "ttf") as! CFURL

CTFontManagerRegisterFontsForURL(cfURL, CTFontManagerScope.Process, nil)

let font = UIFont(name: "ProximaNova-Semibold", size:  14.0)

Имя файла .ttf обычно не совпадает с фактическим именем дескриптора шрифта, который вам нужен для имени UIFont. Чтобы найти это, откройте файл .ttf в Font Book на вашем Mac, посмотрите его детали и найдите имя PostScript. Это имя, которое нужно искать в UIFont (name:...)

В качестве альтернативы вы можете искать свой установленный шрифт после регистрации URL-адреса со следующим кодом:

var fontNames: [[AnyObject]] = []
for name in UIFont.familyNames() {
    println(name)
    if let nameString = name as? String
    {
        fontNames.append(UIFont.fontNamesForFamilyName(nameString))
    }
}
fontNames

Ответ 2

В дополнение к ответам Chris Garrett найдите код Swift 4:

let cfURL = Bundle.main.url(forResource: "SanaSansAlt-Black", withExtension: "otf")! as CFURL
CTFontManagerRegisterFontsForURL(cfURL, CTFontManagerScope.process, nil)
var fontNames: [[AnyObject]] = []
for name in UIFont.familyNames {
   print(name)
   fontNames.append(UIFont.fontNames(forFamilyName: name) as [AnyObject])
}