Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.1K
Visualizações
El color de fondo de la barra de pestañas de iOS 15 UITabBarController se vuelve negro

tabBar.barTintColor no se puede cambiar en iOS 15 beta 4.

Antecedentes Tenemos una aplicación en la App Store y cada año, antes del lanzamiento de la nueva versión principal de iOS, descargamos la versión beta de iOS y probamos nuestra aplicación para solucionar los problemas de antemano.

nuestro problema Este año, cuando probamos en iOS 15 beta 4, encontramos que el color de fondo de la barra de pestañas de UITabBarController se vuelve negro y hace que el elemento (tanto el ícono como el título) sea difícil de leer. En nuestro código teníamos self.tabBar.barTintColor = .white y esta línea de código no funciona en iOS 15.

Nuestros intentos . Busqué en línea y encontré un problema similar, no exactamente el mismo, https://developer.apple.com/forums/thread/682420 . Y probé la apariencia standardAppearance pero esta no es la solución, ya que con la appearance no puedo cambiar tabBar.tintColor .

over 4 years ago · Santiago Trujillo
16 Respostas
Responde à pergunta

0

Tuve el mismo problema y encontré el mismo enlace que está en tu pregunta. Usé el mismo enfoque para la barra de pestañas.

Este es el código que estoy usando y funciona perfectamente.

 if #available(iOS 15.0, *) { let appearance = UITabBarAppearance() appearance.configureWithOpaqueBackground() appearance.backgroundColor = customColor self.tabController.tabBar.standardAppearance = appearance self.tabController.tabBar.scrollEdgeAppearance = view.standardAppearance }
over 4 years ago · Santiago Trujillo Relatório

0

iOS 15 : Vimos esto. Esto es lo que cambié en nuestro guión gráfico para que funcione: ingrese la descripción de la imagen aquí

Esto alteró ligeramente la apariencia en iOS 14, pero estuvo bien para nuestras necesidades.

over 4 years ago · Santiago Trujillo Relatório

0

Cree un UITabBarAppearance como este para mantener el mismo comportamiento visual que las versiones anteriores de iOS:

 @available(iOS 15.0, *) private func updateTabBarAppearance() { let tabBarAppearance: UITabBarAppearance = UITabBarAppearance() tabBarAppearance.configureWithOpaqueBackground() let barTintColor: UIColor = .white tabBarAppearance.backgroundColor = barTintColor updateTabBarItemAppearance(appearance: tabBarAppearance.compactInlineLayoutAppearance) updateTabBarItemAppearance(appearance: tabBarAppearance.inlineLayoutAppearance) updateTabBarItemAppearance(appearance: tabBarAppearance.stackedLayoutAppearance) self.tabBar.standardAppearance = tabBarAppearance self.tabBar.scrollEdgeAppearance = tabBarAppearance } @available(iOS 13.0, *) private func updateTabBarItemAppearance(appearance: UITabBarItemAppearance) { let tintColor: UIColor = .red let unselectedItemTintColor: UIColor = .green appearance.selected.iconColor = tintColor appearance.normal.iconColor = unselectedItemTintColor }
over 4 years ago · Santiago Trujillo Relatório

0

Similar a una respuesta anterior pero con una solución para que la vista no se reconozca si está utilizando clases personalizadas:

 if #available(iOS 15.0, *) { let appearance = UITabBarAppearance() appearance.configureWithOpaqueBackground() appearance.backgroundColor = .white tabBar.standardAppearance = appearance tabBar.scrollEdgeAppearance = tabBar.standardAppearance }
over 4 years ago · Santiago Trujillo Relatório

0

Intenté las respuestas anteriores que son correctas. Quiero agregar más propiedades en esas soluciones. Mi requisito era cambiar el color de fondo de la barra de pestañas, cambiar la imagen seleccionada y el color del título , cambiar la imagen no seleccionada y el color del título . Pude lograrlo en iOS 15 usando el siguiente código.

 if #available(iOS 15.0, *){ let appearance = UITabBarAppearance() appearance.configureWithDefaultBackground() appearance.backgroundColor = UIColor.appDarkColorLightShade appearance.compactInlineLayoutAppearance.normal.iconColor = .lightText appearance.compactInlineLayoutAppearance.normal.titleTextAttributes = [.foregroundColor : UIColor.lightText] appearance.inlineLayoutAppearance.normal.iconColor = .lightText appearance.inlineLayoutAppearance.normal.titleTextAttributes = [.foregroundColor : UIColor.lightText] appearance.stackedLayoutAppearance.normal.iconColor = .lightText appearance.stackedLayoutAppearance.normal.titleTextAttributes = [.foregroundColor : UIColor.lightText] self.tabBarController?.tabBar.standardAppearance = appearance self.tabBarController?.tabBar.scrollEdgeAppearance = self.tabBarController?.tabBar.standardAppearance self.tabBarController?.tabBar.tintColor = .white }else{ self.tabBarController?.tabBar.barTintColor = .appDarkColorLightShade self.tabBarController?.tabBar.unselectedItemTintColor = .lightText self.tabBarController?.tabBar.tintColor = .white }
over 4 years ago · Santiago Trujillo Relatório

0

Xcode 13.0 - iOS 15.0

Mi objetivo era actualizar el color del tinte de la barra de navegación dinámicamente en el cambio del controlador de vista. Establecí estos ajustes primero. Luego llame a esta función cuando sea necesario con UIColor que quiero usar.

Llamada:

 setNavigationBarAppearance(color: .green)

Extensión:

 // MARK: Navigation Bar Appearance Function extension MainViewController { func setNavigationBarAppearance(color: UIColor) { if #available(iOS 15.0, *){ let appearance = UINavigationBarAppearance() appearance.configureWithDefaultBackground() appearance.backgroundColor = color // The background color. self.navigationController?.navigationBar.standardAppearance = appearance self.navigationController?.navigationBar.scrollEdgeAppearance = self.navigationController?.navigationBar.standardAppearance } else { // Background color support for older versions self.navigationController?.navigationBar.barTintColor = color } } }

EDITAR: el color del tinte de la barra de navegación no funcionará en dispositivos anteriores al usar esta configuración, lo siento por la información errónea. Al revertir la configuración a continuación, el color del tinte funciona según lo previsto en todas las versiones.

Mi configuración (el color de tinte funciona perfectamente en iOS 13.5 y iOS 15):

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Relatório

0

Dentro de la subclase de UITabBarController

 if #available(iOS 15.0, *) { let appearance = UITabBarAppearance() appearance.configureWithOpaqueBackground() appearance.backgroundColor = .white tabBar.standardAppearance = appearance tabBar.scrollEdgeAppearance = tabBar.standardAppearance }
over 4 years ago · Santiago Trujillo Relatório

0

 if #available(iOS 15.0, *) { navigationController?.view.backgroundColor = UIColor.colorName }
over 4 years ago · Santiago Trujillo Relatório

0

 func setupAppearance() { // Update based on your font requirements let font = UIFont.systemFont(ofSize: 12, weight: .bold) let tabBarAppearance = UITabBarAppearance() let tabBarItemAppearance = UITabBarItemAppearance() tabBarItemAppearance.normal.titleTextAttributes = [NSAttributedString.Key.font: font, NSAttributedString.Key.foregroundColor: UIColor.gray] tabBarItemAppearance.selected.titleTextAttributes = [NSAttributedString.Key.font: font, NSAttributedString.Key.foregroundColor: UIColor.black] /* Note: To reset background and shadow properties to display opaque colors can use - tabBarAppearance.configureWithOpaqueBackground() */ tabBarAppearance.backgroundColor = .white tabBarAppearance.stackedLayoutAppearance = tabBarItemAppearance tabBar.standardAppearance = tabBarAppearance if #available(iOS 15.0, *) { tabBar.scrollEdgeAppearance = tabBarAppearance } }
over 4 years ago · Santiago Trujillo Relatório

0

Mi aplicación tiene una barra de pestañas opaca debajo de una vista de tabla. En iOS 14.x y versiones anteriores, era suficiente configurar barTintColor en un proxy UIAppearance , pero en iOS 15.0 el fondo de la barra de pestañas era negro cuando la vista de la tabla no llegaba al final de la pantalla.

Mi solución para iOS 15 es continuar usando el proxy UIAppearance en lugar de la clase UITabBarAppearance más nueva. Solo necesitaba configurar backgroundColor además de barTintColor . Esto es compatible con versiones anteriores al menos con iOS 11.

 let tabBarAppearance = UITabBar.appearance() tabBarAppearance.isTranslucent = false tabBarAppearance.barTintColor = barColor tabBarAppearance.backgroundColor = barColor
over 4 years ago · Santiago Trujillo Relatório

0

Después de la actualización a XCode 13 y iOS 15, también enfrenté algunos problemas con la barra de pestañas con el color de fondo de la barra y el color del texto de los elementos para diferentes estados. La forma en que lo arreglé:

 if #available(iOS 15, *) { let tabBarAppearance = UITabBarAppearance() tabBarAppearance.backgroundColor = backgroundColor tabBarAppearance.stackedLayoutAppearance.selected.titleTextAttributes = [.foregroundColor: selectedItemTextColor] tabBarAppearance.stackedLayoutAppearance.normal.titleTextAttributes = [.foregroundColor: unselectedItemTextColor] tabBar.standardAppearance = tabBarAppearance tabBar.scrollEdgeAppearance = tabBarAppearance } else { UITabBarItem.appearance().setTitleTextAttributes([.foregroundColor: selectedItemTextColor], for: .selected) UITabBarItem.appearance().setTitleTextAttributes([.foregroundColor: unselectedItemTextColor], for: .normal) tabBar.barTintColor = backgroundColor }
over 4 years ago · Santiago Trujillo Relatório

0

Para mí, es simple y no necesita obtener acceso a la instancia de UINavigationController . Simplemente llámelo desde AppDelegate:didFinishLaunchingWithOptions

 if #available(iOS 15.0, *) { let appearance = UITabBarAppearance() appearance.configureWithOpaqueBackground() UITabBar.appearance().standardAppearance = appearance UITabBar.appearance().scrollEdgeAppearance = appearance }
over 4 years ago · Santiago Trujillo Relatório

0

Mi barra de pestañas era transparente. Y esto: tabBar.scrollEdgeAppearance = tabBar.standardAppearance no funciona para mí.

Tuve que reemplazarlo con tabBar.scrollEdgeAppearance = appearance . Supongo que también es lo mismo para la barra de navegación.

Así que la solución final se ve así:

 if #available(iOS 15.0, *) { let appearance = UITabBarAppearance() appearance.configureWithOpaqueBackground() appearance.backgroundColor = .white //or whatever your color is tabBar.scrollEdgeAppearance = appearance tabBar.standardAppearance = appearance }

Además, la respuesta anterior de Rafat touqir Rafsun funciona bien si desea configurar la apariencia en el appdelegate.

Probado en iOS 15.0.1, Xcode 13.

over 4 years ago · Santiago Trujillo Relatório

0

Si no desea configurar scrollEdgeAppearance, puede anularlo como apariencia estándar, y todas sus configuraciones estarán en ambas apariencias.

 if #available(iOS 15.0, *) { tabBar.scrollEdgeAppearance = tabBar.standardAppearance }
over 4 years ago · Santiago Trujillo Relatório

0

Aquí está mi implementación, Objective-C, tanto para UITabBar como para UINavigationBar . Son más o menos lo mismo.

Llame a esto en didFinishLaunchingWithOptions en su AppDelegate.m .

 - (void)setupAppearance { if (@available(iOS 15, *)) { UIColor *color = [UIColor whiteColor]; // #F5F5F5 for white smoke. UITabBarAppearance *tabBarAppearance = [UITabBarAppearance new]; tabBarAppearance.backgroundColor = color; [[UITabBar appearance] setStandardAppearance:tabBarAppearance]; [[UITabBar appearance] setScrollEdgeAppearance:tabBarAppearance]; UINavigationBarAppearance *navBarAppearance = [UINavigationBarAppearance new]; navBarAppearance.backgroundColor = color; [[UINavigationBar appearance] setStandardAppearance:navBarAppearance]; [[UINavigationBar appearance] setScrollEdgeAppearance:navBarAppearance]; } }
over 4 years ago · Santiago Trujillo Relatório

0

Para Swift, utilizo el siguiente código para mantener mi aplicación con el mismo aspecto que antes. Mi barra de pestañas tiene un color rosa seleccionado tanto para el ícono como para el título. Y con color de tinte gris predeterminado.

Usar configureWithDefaultBackground en lugar de configureWithOpaqueBackground porque quiero un poco de transparencia en la barra de pestañas.

Por ahora, está funcionando bien, sigue buscando los últimos cambios.

 if #available(iOS 15, *) { let appearance = UITabBarAppearance() appearance.configureWithDefaultBackground() appearance.stackedLayoutAppearance.normal.iconColor = .systemGray appearance.stackedLayoutAppearance.normal.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.systemGray] appearance.stackedLayoutAppearance.selected.iconColor = .systemPink appearance.stackedLayoutAppearance.selected.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.systemPink] // appearance.backgroundColor = .systemBackground self.tabBar.standardAppearance = appearance self.tabBar.scrollEdgeAppearance = appearance } if #available(iOS 13, *) { let appearance = UITabBarAppearance() appearance.shadowImage = UIImage() appearance.shadowColor = .white appearance.stackedLayoutAppearance.normal.iconColor = .systemGray appearance.stackedLayoutAppearance.normal.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.systemGray] // appearance.stackedLayoutAppearance.normal.badgeBackgroundColor = .yellow appearance.stackedLayoutAppearance.selected.iconColor = .systemPink appearance.stackedLayoutAppearance.selected.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.systemPink] self.tabBar.standardAppearance = appearance }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda