Навигационная полоса имеет фон только при прокруткеIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Навигационная полоса имеет фон только при прокрутке

Сообщение Anonymous »

I am trying to implement a detail view which is linked from a navigation view.
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())
}
< /p>
*** Решение ***
Оказывается, я должен поместить код конфигураций панели 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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