extension UIFont {
/// 动态字体获取
static func font(name: String, size: CGFloat, of type: String = "ttf") -> UIFont {
let fontName = loadFontFile(name, ofType: type)
return UIFont.init(name: fontName, size: size) ?? UIFont.systemFont(ofSize: size)
}
/// 加载本地字体
static func loadFontFile(_ name: String, ofType type: String = "ttf", target bundle: Bundle = .main) -> String {
var fullName: String = ""
guard let path = bundle.path(forResource: name, ofType: type) else {
return ""
}
if let fontData = NSData(contentsOfFile: path) {
fullName = registerFont(fontData: fontData)
}
return fullName
}
/// 动态注册字体文件
static func registerFont(fontData: NSData) -> String {
// ...通过CGDataProvider承载生成CGFont对象
let fontDataProvider = CGDataProvider(data: CFBridgingRetain(fontData) as! CFData)
let fontRef = CGFont(fontDataProvider!)!
// ...注册字体
var fontError = Unmanaged<CFError>?.init(nilLiteral: ())
CTFontManagerRegisterGraphicsFont(fontRef, &fontError)
// ...获取了字体实际名字
let fullName: String = fontRef.fullName! as String
let postScriptName: String = fontRef.postScriptName! as String
return fullName
}
}
ios动态注册加载字体文件方法,无需在Info.plist文件中配置
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- info.plist项目的配置文件 Localization native development region本...
- 在进行数据请求的时候,由于我依然用的http来请求,所以程序报错了: 出错原因: 修正报错:打开info.plis...
- 1.定位为题: 调用定位时在target里设置两个属性:NSLocationAlwaysUsageDescript...
- iOS 10 开始对隐私权限更加严格, 如需使用隐私权限需要在工程的info.plist文件中声明,如果不声明程序...
- Privacy - Location When In Use Usage Description在地图要获取用户定...