In this detail view, there is a default nav bar on top with a back button.
But the Бар показывает какой -то цвет только при прокрутке вверх. Я понятия не имею, почему. src = "https://i.sstatic.net/xgo1d.png"/>
Прокрутка: < /p>
Первоначально у бара Nav также нет фона, когда он прокрутка или нет.
Итак, я создал метод init () для настройки стиля. < /P>
Код: Выделить всё
init(fruit: Fruit) {
self.fruit = fruit
if #available(iOS 15.0, *) {
let navigationBarAppearance = UINavigationBarAppearance()
navigationBarAppearance.configureWithDefaultBackground()
UINavigationBar.appearance().standardAppearance = navigationBarAppearance
UINavigationBar.appearance().compactAppearance = navigationBarAppearance
UINavigationBar.appearance().scrollEdgeAppearance = navigationBarAppearance
}
}
< /code>
Просмотр корпуса представляет собой навигационное представление снаружи и прокрутки внутри. Не скрывайте его, над изображением было бы огромное пространство. (Я понятия не имею, почему)
** Обновленный код **
Я обновил свой код, который использует непрозрачный фон.init(fruit: Fruit) {
self.fruit = fruit
let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.configureWithOpaqueBackground()
UINavigationBar.appearance().scrollEdgeAppearance = navBarAppearance
UINavigationBar.appearance().standardAppearance = navBarAppearance
}
var body: some View {
NavigationView {
ScrollView(.vertical, showsIndicators: false) {
VStack(alignment: .center, spacing: 20) {
// HEADER
FruitHeaderView(fruit: fruit)
VStack(alignment: .leading, spacing: 20) {
// TITLE
Text(fruit.title)
.font(.largeTitle)
.fontWeight(.heavy)
.foregroundColor(fruit.gradientColors[1])
} //: VSTACK
.padding(.horizontal, 20)
.frame(maxWidth: 640, alignment: .center)
} //: VSTACK
.navigationBarHidden(true)
} //: SCROLL
.edgesIgnoringSafeArea(.top)
} //: NAVIGATION
.navigationBarTitle(fruit.title, displayMode: .inline)
.navigationViewStyle(StackNavigationViewStyle())
}
*** Решение ***
Оказывается, я должен поместить код конфигураций панели NAV в родительском представлении. Во время init ().
Кто -нибудь может объяснить, почему это на родительском представлении? Или если я хочу другой стиль у родителей и ребенка, что мне делать?
Код: Выделить всё
init() {
let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.configureWithOpaqueBackground()
UINavigationBar.appearance().scrollEdgeAppearance = navBarAppearance
UINavigationBar.appearance().standardAppearance = navBarAppearance
}
var body: some View {
NavigationView {
List {
ForEach(fruits.shuffled()) { item in
NavigationLink {
FruitDetailView(fruit: item)
} label: {
FruitRowView(fruit: item)
.padding(.vertical, 4)
}
}
}
.listStyle(.plain)
.navigationTitle("Fruits")
} //: NAVIGATION
}
Подробнее здесь: https://stackoverflow.com/questions/718 ... hen-scroll