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在地图要获取用户定...