Код: Выделить всё
final class AppSettings: ObservableObject {
@Published var tint: Color = .red {
didSet { updateNavigationBarAppearance() }
}
init() {
updateNavigationBarAppearance()
}
private func updateNavigationBarAppearance() {
let appearance = UINavigationBarAppearance()
appearance.configureWithTransparentBackground()
appearance.largeTitleTextAttributes = [
.font: UIFont.preferredFont(forTextStyle: .largeTitle).roundedBold,
.foregroundColor: UIColor(tint).withAlphaComponent(0.9)
]
appearance.titleTextAttributes = [
.font: UIFont.preferredFont(forTextStyle: .headline).roundedBold,
.foregroundColor: UIColor(tint).withAlphaComponent(0.9)
]
let navBarAppearance = UINavigationBar.appearance()
navBarAppearance.standardAppearance = appearance
navBarAppearance.compactAppearance = appearance
navBarAppearance.scrollEdgeAppearance = appearance
}
}
extension UIFont {
var roundedBold: UIFont {
guard let descriptor = fontDescriptor
.withDesign(.rounded)?
.withSymbolicTraits(.traitBold) else { return self }
return UIFont(descriptor: descriptor, size: pointSize)
}
}
Но имел ошибку этого при прокрученных представлениях, поскольку мы использовали внешний вид.configureWithTransBackground () и прозрачность не работает в uinavigationbar.appearance (). founalcolor конфигурация.
С помощью версии ОС теперь мы можем воспользоваться использованием .toolbarbackground , который исправил проблему прозрачности при прокрутке в область NAV .
Однако, когда этот модификатор реализован, он влияет на шрифт заголовка навигации, Возврат его к лице Serif по умолчанию и черному/белому цвету.
Кто -нибудь знает способ настроить заголовок, а также использовать модификатор.
Хотя .navigationTitle принимает элемент текста , кажется, вы не можете его настроить, например:
Код: Выделить всё
.navigationTitle(
Text("Today")
.font(.system(.largeTitle, design: .rounded, weight: .black))
)
< /p>
Подробнее здесь: https://stackoverflow.com/questions/778 ... in-swiftui
Мобильная версия