Вам необходимо установить библиотеку Introspect
.
Как использовать
Она должна быть использована в корне NavigationView. Если вы используете
NavigationView {
VStack { ... }
// ↓ set custom font
.navigationTitleFont(font: UIFont.custom.extraBold(ofSize: 20))
}
3 Шаги
- Создайте модификатор ViewModifier
- Добавьте метод расширения к UIFont
- Добавьте метод расширения к представлению
Шаг 1: Создание модификатора вида
import SwiftUI
import Introspect
public struct NavigationTitleFontModifier: ViewModifier {
public var font: UIFont
public func body(content: Content) -> some View {
content
.introspectNavigationController {
$0.navigationBar.titleTextAttributes = [.font:font]
}
}
}
Шаг 2: Добавьте метод расширения к UIFont
В этом нет необходимости. Он нужен только для того, чтобы легко вызывать пользовательский шрифт.
extension UIFont {
public struct custom {
static func extraBold(ofSize size: CGFloat) -> UIFont {
return UIFont(name: "BoldCustomFontName", size: size) ?? UIFont.systemFont(ofSize: size, weight: .bold)
}
}
}
Шаг 3: Добавьте метод расширения к View
public extension View {
func navigationTitleFont(font: UIFont) -> some View {
self.modifier(NavigationTitleFontModifier(font: font))
}
}