Изменения в поведении представления вкладок в Xcode 13

#swift #xcode #swiftui

Вопрос:

У меня есть приложение, которое использует SwiftUI и имеет вид вкладки в нижней части приложения для навигации между страницами. Когда он был скомпилирован и встроен в Xcode 13, вид вкладки становится несколько прозрачным, и часть фонового изображения просвечивает. Изображение 1-это представление из Xcode 13. Изображение 2 — это представление, как показано в предыдущих версиях Xcode.

Что мне нужно изменить, чтобы восстановить внешний вид более ранних версий?

Изображение 1: частично прозрачное представление вкладок

Изображение 2: исходное представление вкладок

Ответ №1:

Начиная с iOS 15 TabView , он меняет свой внешний вид, когда содержимое под ним прокручивается. Если вид прокрутки находится вверху, то внешний вид панели вкладок определяется standardAppearance . Если он находится ближе ко дну, он использует scrollEdgeAppearance . Значение по умолчанию scrollEdgeAppearance прозрачно, вызывая поведение, которое вы видите.

Чтобы вид вкладки имел белый фон в обоих сценариях, вы могли бы добавить что-то подобное в блок TabView » s onAppear :

 let appearance = UITabBarAppearance()
appearance.backgroundColor = .white
            
UITabBar.appearance().standardAppearance = appearance
            
if #available(iOS 15.0, *) {
    UITabBar.appearance().scrollEdgeAppearance = appearance
}