Если сделать TabView непрозрачным в SwiftUI, сверху появится новый вид

Всем привет. Я создаю простое приложение 9X_ios SwiftUI, и мне бы хотелось, чтобы TabView 9X_uitabbar моего приложения имел настраиваемый фон 9X_swift1.2 и не был полупрозрачным.

Для этого я использую 9X_swiftui UITabBar.appearance().backgroundColor = Color и UITabBar.appearance().isTranslucent = false, которые должны делать именно это, и 9X_swift-language да, он делает полосу непрозрачной, но вместо 9X_swiftui-bug того, чтобы присвоить полосе выбранный мной 9X_swift-ios цвет, она создает новое представление в 9X_swift-ios верхней части панели вкладок, которой не 9X_uitabbar должно быть и явно не было раньше.

Без изменения прозрачности и цвета панели вкладок 9X_Если сделать TabView непрозрачным в SwiftUI, сверху появится новый вид_swift1.2

Изменение прозрачности и цвета панели вкладок 9X_Если сделать TabView непрозрачным в SwiftUI, сверху появится новый вид_ios

Вы можете 9X_swift1.2 заметить появившееся новое представление. Я 9X_apple-ios предполагаю, что это проблема с isTranslucent, потому 9X_apple-ios что, когда я удаляю его, новое представление 9X_swift исчезает.

Есть ли способ изменить цвет и 9X_iphone-os сделать полосу непрозрачной и не отображать 9X_swift-language такой вид?

Любая помощь приветствуется. Заранее 9X_uitabview спасибо.

Мой код

SceneDelegate (только часть с изменяющимся цветом)

UITabBar.appearance().isTranslucent = false UITabBar.appearance().backgroundColor = UIColor(named: "backgroundColor") 

TabView

struct TabController: View { @State private var selection = 0 var body: some View { TabView(selection: $selection) { HomePageView() .tabItem { Image(systemName: "house.fill") .font(.title) } .tag(0) Text("Second View") .font(.title) .tabItem { Image(systemName: "bell.fill") .font(.title) } .tag(1) } .edgesIgnoringSafeArea(.top) } } 

13
1

  • При осмотре серая область — это не дополнительный вид, а фактически ф ...
4
Общее количество ответов: 4

Ответ #1

Ответ на вопрос: Если сделать TabView непрозрачным в SwiftUI, сверху появится новый вид

С помощью этого кода можно установить цвет 9X_swift-ios панели вкладок. Напишите этот код в SceneDelegate

UITabBar.appearance().shadowImage = UIImage() UITabBar.appearance().backgroundImage = UIImage() UITabBar.appearance().isTranslucent = true UITabBar.appearance().backgroundColor = .black 

В TabBar 9X_ios-sdk Background вы можете установить любой другой 9X_uitabbar цвет вместо черного. Он работает отлично.

ContentView:

TabView(selection: $selection) { Text("1st View") .tabItem { Image(systemName: "house.fill") .font(.title) } .tag(0) Text("Second View") .font(.title) .tabItem { Image(systemName: "bell.fill") .font(.title) } .tag(1) } .edgesIgnoringSafeArea(.top) 

9X_Если сделать TabView непрозрачным в SwiftUI, сверху появится новый вид_swift1.2

15
0

Ответ #2

Ответ на вопрос: Если сделать TabView непрозрачным в SwiftUI, сверху появится новый вид

Это правильный способ сделать это.

Он также 9X_swift работает со SwiftUI, поскольку TabView и 9X_uitabbar NavigationView на самом деле являются UIHostedController 9X_swift-language для устаревших UITabBarController и UINavigationController.

Изменить: только 9X_swiftui-bug что посмотрел "Модернизация пользовательского 9X_swiftui-bug интерфейса для iOS 13" Вот как это 9X_iphone-os сделать:

let appearance = UINavigationBarAppearance() appearance.configureWithOpaqueBackground() appearance.titleTextAttributes = [.foregroundColor: UIColor.white] appearance.largeTitleTextAttributes = [.foregroundColor: UIColor .white] 

Затем настройте внешний вид на различные 9X_swift1.2 типы внешнего вида.

navigationBar.standardAppearance = appearance navigationBar.compactAppearance = appearance navigationBar.scrollEdgeAppearance = appearance 

Ссылка: https://developer.apple.com/videos/play/wwdc2019/224/

2-е изменение: нужно найти 9X_apple-ios чистый способ доступа к UINavigationController 9X_iphone-os из представления SwiftUI.

А пока это поможет:

extension UINavigationController { override open func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) let appearance = UINavigationBarAppearance() appearance.configureWithOpaqueBackground() navigationBar.standardAppearance = appearance navigationBar.compactAppearance = appearance navigationBar.scrollEdgeAppearance = appearance } } extension UITabBarController { override open func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) let appearance = UITabBarAppearance() appearance.configureWithOpaqueBackground() tabBar.standardAppearance = appearance } } 

7
0

Ответ #3

Ответ на вопрос: Если сделать TabView непрозрачным в SwiftUI, сверху появится новый вид

Вы можете получить доступ к UINavigationController 9X_swift-language или UITabbarController, чтобы использовать 9X_swiftui [https://github.com/siteline/SwiftUI-Introspect]

и 9X_swiftui напишите так

NavigationVIew {...} .introspectNavigationController { (navController) in let coloredAppearance = UINavigationBarAppearance() coloredAppearance.configureWithOpaqueBackground() coloredAppearance.backgroundColor = backgroundColor coloredAppearance.backgroundImage?.withTintColor(backgroundColor) coloredAppearance.titleTextAttributes = [.foregroundColor: tintColor] coloredAppearance.largeTitleTextAttributes = [.foregroundColor: tintColor] coloredAppearance.shadowColor = shadowColor navController.navigationBar.compactAppearance = coloredAppearance navController.navigationBar.standardAppearance = coloredAppearance navController.navigationBar.scrollEdgeAppearance = coloredAppearance navController.navigationBar.tintColor = tintColor } 

2
0

Ответ #4

Ответ на вопрос: Если сделать TabView непрозрачным в SwiftUI, сверху появится новый вид

Вы можете использовать такое расширение:

extension UITabBarController { override open func viewDidLoad() { super.viewDidLoad() let appearance = UITabBarAppearance() appearance.backgroundColor = .black tabBar.standardAppearance = appearance } } 

Обратите 9X_uitabbar внимание, что замещаемая функция должна 9X_uitabview быть viewDidLoad(). По крайней мере, у меня это не работает, когда 9X_swiftui это функция viewDidAppear(:).

2
0