Вы можете создать свой собственный модификатор вида. Вы можете определить, какой размер и шрифт вы хотите использовать для каждого из UIFont.TextStyle внутри private var fontDescriptions:
.
Теперь вы можете вызывать этот модификатор для вас. Text("my text").customFont(.headline)
Имейте в виду, в этом также реализована функция масштабирования шрифта.
Вы также можете вызвать функцию «customFont» «шрифт», если хотите быть хардкорным.
extension View {
func customFont(_ textStyle: UIFont.TextStyle) -> ModifiedContent<Self, CustomFont> {
return modifier(CustomFont(textStyle: textStyle))
}
}
struct CustomFont: ViewModifier {
let textStyle: UIFont.TextStyle
/// Will trigger the refresh of the view when the ContentSizeCategory changes.
@Environment(\.sizeCategory) var sizeCategory: ContentSizeCategory
func body(content: Content) -> some View {
guard let fontDescription = fontDescriptions[textStyle] else {
print("textStyle nicht vorhanden: \(textStyle)")
return content.font(.system(.body));
}
let fontMetrics = UIFontMetrics(forTextStyle: textStyle)
let fontSize = fontMetrics.scaledValue(for: fontDescription.1)
return content.font(.custom(fontDescription.0, size: fontSize))
}
}
/// Define the custom fonts to use, depending on the TextStyle.
typealias CustomFontDescription = (String, CGFloat)
private var fontDescriptions: [UIFont.TextStyle: CustomFontDescription] = [
.headline: ("MYFONT", SIZE),
.subheadline: ("MYFONT", SIZE),
...
]