繁体   English   中英

如何从 iOS 框架加载/读取字体,这些字体已经添加到 Swift 的主项目中?

[英]How to load/Read Fonts from iOS framework, which are already added in main project in Swift?

在有人将其标记为重复之前,我已经检查了这篇文章但没有帮助。

我创建了一个框架,并在该框架中创建了一些 UI。 现在我想为该 UI 使用自定义字体,这些自定义字体名称将由用户自己提供。 更清楚地说:我有一个框架,我已在现有项目中导入。 现在我必须通过框架显示一个弹出窗口。

MyFramework.showPopup()

但是在这里,用户将指定该弹出窗口的字体,即

MyFramework.showPopup(regularFont: FontA.otf, boldFont: FontB.otf)

这些字体已经添加到我导入框架的项目中。 我只需要一种从框架内部加载这些字体的方法。 任何帮助,将不胜感激。 谢谢。

您需要注册本地字体(位于框架内的字体)才能被 UIFonts API 识别。 一旦你注册了你的字体,它们就可以在框架之外使用。 确保只调用一次此方法以避免字体重复或可能的崩溃。

extension UIFont {
static func registerFonts(from bundle: Bundle) {
    print("Registering local fonts...")
    let fontUrls = bundle.urls(forResourcesWithExtension: "ttf", subdirectory: nil)!
    fontUrls.forEach { url in
        let fontDataProvider = CGDataProvider(url: url as CFURL)!
        let font = CGFont(fontDataProvider)!
        
        print(font.fullName)
        
        var error: Unmanaged<CFError>?
        guard CTFontManagerRegisterGraphicsFont(font, &error) else {
            fatalError("Could not register font from url \(url), error: \(error!.takeUnretainedValue())")
        }
    }
    print("Registering Ended")
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM