CustomFont
旨在为 SwiftUI 应用程序提供直观的字体集成和管理。它为创建文本样式提供了用户友好的界面,并引入了根据用户定义的辅助功能设置,使用 LegibilityWeight
动态控制文本粗细的机制。
按照通常的方式将所需的字体添加到您的项目。另外,请记住在 Info.plist
文件中列出它们。
使用提供的协议定义您的字体。请注意
FontFamily
协议的类型中。.italic()
视图修饰符来实现斜体样式。但是,请确保您的项目中包含字体的斜体变体。如果没有它们,.italic()
视图修饰符将不起作用。LegibilityWeight
设置,请在您的项目中同时包含下一个最粗字重的字体,并将其作为 FontFamily
类型中的一个 case 列出。这对于 LegibilityWeight
功能正常工作至关重要。fileprivate enum NewYorkExtraLarge: String, CaseIterable, FontFamily {
static let baseName = "NewYorkExtraLarge-"
case semiBold, bold
}
extension CustomTextStyle {
/// NewYorkExtraLarge, 600, 28, fixed
static let titleFixed = CustomTextStyle(NewYorkExtraLarge.semiBold, fixedSize: 28)
/// NewYorkExtraLarge, 600, 28
static let title = CustomTextStyle(NewYorkExtraLarge.semiBold, size: 28, relativeTo: .title)
}
struct ContentView: View {
@Environment(\.legibilityWeight) private var legibilityWeight
private var attributedString: AttributedString {
var result = AttributedString("Hello World!")
result.font = .custom(.title).getFont(accordingTo: legibilityWeight)
return result
}
var body: some View {
VStack(spacing: 20) {
Text("Hello World!")
.font(.custom(.titleFixed))
Text("Hello World!")
.font(.custom(.title))
Text("Hello World!")
.font(.custom(.title))
.italic()
Text(attributedString)
Text("Hello World!")
.font(.custom(.title), accordingTo: legibilityWeight)
}
.padding()
}
}