为你的 iOS 应用轻松实现字体品牌化。
即时字体品牌化,自动覆盖系统字体
UIFont.systemFontFamilyOverride = "Marker Felt" // replace with appropriate font
在 UIKit 中显式指定字体
someUIKitElement.font = .systemFontOverride(size: 16)
在 SwiftUI 中显式指定字体
someSwiftUIView
.font(.systemOverride(size: 16))
pod 'SystemFontOverride'
dependencies: [
.package(url: "https://github.com/yonat/SystemFontOverride", from: "1.0.0")
]
大多数 UI 元素都能正常使用覆盖后的字体。
然而,少数元素会完全忽略字体覆盖
ColorPicker
或 UIColorWell
呈现的 Sheet此外,一些 SwiftUI 控件需要显式使用 .font()
修饰符来更新其标题字体
Picker
Menu
Toggle
bordered
和 borderedProminent
按钮样式Label
详情请参阅 Demo 应用。
为了自动覆盖系统字体,SystemFontOverride 使用 方法调配 (method swizzling) 来处理 UIFont.systemFont(ofSize:)
和相关方法。
分段控件和 UITextField
会忽略系统字体覆盖,但它们的 appearance()
代理可以正确地将其标题设置为覆盖后的字体。