Иногда нужно сменить шрифт во всем приложении сразу на определенный, для этого можно воспользоваться следующим методом
Добавляем в AppDelegate.swift
в раздел
func application(_ application: UIApplication, didFinishLaunchingWithOptions
UIFont.overrideInitialize()
Создаем файл Extension swift.
import UIKit
struct AppFontName {
static let regular = «Bahnschrift» //Тут имя нашего шрифта
}
extension UIFontDescriptor.AttributeName {
static let nsctFontUIUsage =
UIFontDescriptor.AttributeName(rawValue: «NSCTFontUIUsageAttribute»)
}
extension UIFont {
@objc class func mySystemFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.regular, size: size)!
}
@objc convenience init(myCoder aDecoder: NSCoder) {
if let fontDescriptor = aDecoder.decodeObject(forKey: «UIFontDescriptor») as? UIFontDescriptor {
let fontName = AppFontName.regular
self.init(name: fontName, size: fontDescriptor.pointSize)!
} else {
self.init(myCoder: aDecoder)
}
}
class func overrideInitialize() {
if self == UIFont.self {
let systemFontMethod = class_getClassMethod(self, #selector(systemFont(ofSize:)))
let mySystemFontMethod = class_getClassMethod(self, #selector(mySystemFont(ofSize:)))
method_exchangeImplementations(systemFontMethod!, mySystemFontMethod!)
let initCoderMethod = class_getInstanceMethod(self, #selector(UIFontDescriptor.init(coder:))) // Trick to get over the lack of UIFont.init(coder:))
let myInitCoderMethod = class_getInstanceMethod(self, #selector(UIFont.init(myCoder:)))
method_exchangeImplementations(initCoderMethod!, myInitCoderMethod!)
}
}
}
в Info.plist добавляем ключ