我在框架中添加了自定义字体.我遵循了所有的步骤,但都不起作用.

我可以在Interface Builder中设置字体,但当我构建项目时,它不会在模拟器/设备上显示此字体.

推荐答案

我来晚了一点,但我接受了PetahChristian的解决方案,以扩展的形式创建了一个Swift版本.这对我有用.我发现,当你试图以常规方式使用字体名称和大小获取字体时,它总是在主Bundle 包中查找字体文件,并且没有方法将Bundle 包标识符作为参数.如果苹果能做一个就好了.

Swift:

public extension UIFont {

    public static func jbs_registerFont(withFilenameString filenameString: String, bundle: Bundle) {

        guard let pathForResourceString = bundle.path(forResource: filenameString, ofType: nil) else {
            print("UIFont+:  Failed to register font - path for resource not found.")
            return
        }

        guard let fontData = NSData(contentsOfFile: pathForResourceString) else {
            print("UIFont+:  Failed to register font - font data could not be loaded.")
            return
        }

        guard let dataProvider = CGDataProvider(data: fontData) else {
            print("UIFont+:  Failed to register font - data provider could not be loaded.")
            return
        }

        guard let font = CGFont(dataProvider) else {
            print("UIFont+:  Failed to register font - font could not be loaded.")
            return
        }

        var errorRef: Unmanaged<CFError>? = nil
        if (CTFontManagerRegisterGraphicsFont(font, &errorRef) == false) {
            print("UIFont+:  Failed to register font - register graphics font failed - this font may have already been registered in the main bundle.")
        }
    }

}

用法示例:

UIFont.jbs_registerFont(
    withFilenameString: "Boogaloo-Regular.ttf",
    bundle: Bundle(identifier: "com.JBS.JBSFramework")!
)

Swift相关问答推荐

在swiftUI中测试取决于网络请求的Observer对象类的单元

SwiftUI—如何识别单词并获取视觉中的位置

为什么ClosedRange<;Int&>包含的速度比预期慢340万倍?

为什么枚举上的.allCases.forEach不是循环(继续和中断不起作用)?

从Swift中的泛型类继承?

';NSInternal不一致异常';,原因:';可见导航栏Xcode 15.0 Crash请求布局

SwiftUI .task 视图修改器:运行在哪个线程中?

macOS SwiftUI: 如何触发删除一个项目?

使用 Async-Await 和 Vapor-Fluent 创建 CRUD 函数 - Swift 5.6

如何在 SWIFTUI 中旋转修剪?

无法分配给属性:absoluteString是一个只能获取的属性

如何在 SwiftUI 的 fileImporter 中为 allowedContentTypes 设置 xcodeproj 类型?

Xcode 6 中的嵌入式内容包含 Swift 代码构建设置有什么作用?

在 Swift 4 中,如何删除基于块的 KVO 观察者?

在 Swift 中将计时器标签格式化为小时:分钟:秒

在 Swift 中以编程方式更新约束的常量属性?

<<错误类型>> 奇怪的错误

来自 ObservableObject 的绑定值

Swift中方法的弃用和其他属性,如何?

显示 UIAlertController 的简单 App Delegate 方法(在 Swift 中)