SystemFontOverride

为你的 iOS 应用轻松实现字体品牌化。

Swift Version License CocoaPods Compatible Platform PRs Welcome

特性

用法

即时字体品牌化,自动覆盖系统字体

UIFont.systemFontFamilyOverride = "Marker Felt" // replace with appropriate font

在 UIKit 中显式指定字体

someUIKitElement.font = .systemFontOverride(size: 16)

在 SwiftUI 中显式指定字体

someSwiftUIView
    .font(.systemOverride(size: 16))

安装

CocoaPods

pod 'SystemFontOverride'

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/yonat/SystemFontOverride", from: "1.0.0")
]

局限性

大多数 UI 元素都能正常使用覆盖后的字体。

然而,少数元素会完全忽略字体覆盖

此外,一些 SwiftUI 控件需要显式使用 .font() 修饰符来更新其标题字体

详情请参阅 Demo 应用。

机制

为了自动覆盖系统字体,SystemFontOverride 使用 方法调配 (method swizzling) 来处理 UIFont.systemFont(ofSize:) 和相关方法。

分段控件和 UITextField 会忽略系统字体覆盖,但它们的 appearance() 代理可以正确地将其标题设置为覆盖后的字体。