Измените шрифт, оттенок и фон заголовка NavigationStack в SwiftUIIOS

Программируем под IOS
Ответить
Anonymous
 Измените шрифт, оттенок и фон заголовка NavigationStack в SwiftUI

Сообщение Anonymous »

Я обновляю пользовательский интерфейс приложения для iOS, теперь ориентированного на iOS 16 и более поздних версий.
В предыдущей версии дизайна я менял шрифт, стиль и цвет .navigationTitle, используя примерно такой код:

Код: Выделить всё

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)
}
}
Это дало мне что-то похожее на это:
Изображение

Но возникла ошибка, связанная с тем, что это происходило в прокручиваемых представлениях, поскольку мы использовали внешний вид.configureWithTransparentBackground(), и прозрачность не работает в Конфигурация UINavigationBar.appearance().backgroundColor.
Изображение

Благодаря обновлению версии ОС мы теперь можем воспользоваться преимуществами использования .toolbarBackground, который устранил проблему прозрачности при прокрутке в области навигации.
Изображение

Изображение

Однако, когда этот модификатор реализован, он влияет на шрифт заголовка навигации, возвращая ему шрифт с засечками по умолчанию и черный/белый цвет.
Кто-нибудь знает способ настроить заголовок, одновременно используя модификатор .toolbarBackground?
Хотя .navigationTitle принимает элемент Text, похоже, вы не можете его настроить, например:

Код: Выделить всё

  .navigationTitle(
Text("Today")
.font(.system(.largeTitle, design: .rounded, weight: .black))
)
Как вы получите это предупреждение в Xcode:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/778 ... in-swiftui
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»