Поставьте ScrollView
как можно дальше, иначе анимация заголовка не будет работать. Следующий код делает то, что вы хотите:
struct ChildView: View {
var body: some View {
ScrollView {
VStack(spacing: 20) {
ForEach(0..<40) { _ in
Text("Hello, World!")
.frame(maxWidth: .infinity)
}
}
.background(Color.green.edgesIgnoringSafeArea(.all))
}
.navigationBarTitle("Discover")
}
}
struct ContentView: View {
var body: some View {
NavigationView {
ChildView()
}
}
}
Чтобы получить полностью черный фон, даже если вы прокрутите вверх дно, вы должны поиграть в UINavigationController
. Там же я изменил цвета панели навигации, чтобы добиться вашего внешнего вида. Обратите внимание, что это не отслеживает, включил ли пользователь темный режим или нет.
extension UINavigationController {
override open func viewDidLoad() {
super.viewDidLoad()
overrideUserInterfaceStyle = .dark
let appearance = UINavigationBarAppearance()
appearance.backgroundColor = UIColor.black
appearance.titleTextAttributes = [.foregroundColor: UIColor.white]
appearance.largeTitleTextAttributes = [.foregroundColor: UIColor.white]
navigationBar.standardAppearance = appearance
navigationBar.compactAppearance = appearance
navigationBar.scrollEdgeAppearance = appearance
}
}