Cuando estoy navegando de un lado a otro entre los controladores principal y secundario en un controlador de navegación de detalle principal, veo una sombra oscura en el lado derecho de la barra de navegación en la parte superior. Comenzó después de que actualicé a Xcode 5.1. Se siente áspero y molesto. ¿Cómo puedo deshacerme de él?
91
darkColor
vista todavía está allí y causa este problema.arreglado
fuente
navigationController.view.backgroundColor = .white
ya no funciona en iOS 11.navigationController.view.backgroundColor = .white
funciona en iOS 12. La eliminación de translúcido de la barra de navegación no se puede usar en situaciones en las que es necesario, pero la sombra negra no.La respuesta de nonamelive es perfecta. Para lograr lo mismo en Interface Builder Y MANTENER LA TRANSLUCENCIA , seleccione el controlador de navegación y establezca un atributo de tiempo de ejecución definido por el usuario
view.backgroundColor
como se muestra en la captura de pantalla (en el Inspector de identidad). Repita para todos los controladores de navegación que muestren este problema.Parece que todo este problema ocurre porque el color negro (o en realidad, no hay color) de UINavigationController se está filtrando en el momento en que CoreGraphics lo captura al comenzar la animación. Por lo tanto, configurarlo en blanco evitará eso.
fuente
UINavigationController
, no en viewController.Este parece ser un error que se introdujo en iOS 7.1. En mi caso, es causado por una UIToolbar colocada directamente debajo de la barra de navegación. La sombra oscura también aparece en la barra de pestañas translúcida.
La sombra parece estar causada por la vista de fondo de UIToolbar. Ahora uso esta solución en el controlador de vista con la barra de herramientas que oculta la vista de fondo de la barra de herramientas durante la transición:
Este es el código para
[UIView findViewRecursively:]
Presenté este radar: http://openradar.appspot.com/16418845
fuente
backgroundView
.[self.toolbar valueForKey:@"_backgroundView"]
. Tenga en cuenta que esta es una API privada, pero creo que Apple no lo detectará porque_backgroundView
es solo un nombre genérico.Parece suceder con cualquier barra (TabBar o ToolBar) que sea translúcida.
Entonces, una forma de solucionarlo es configurar el
_tabBar.translucent = NO;
(en mi caso). Esto evita la sombra no deseada debajo de la barra de navegación superior mientras deja la barra de navegación translúcida. Desafortunadamente, la barra inferior ya no es translúcida.Puede volver a ser translúcido, pero todo esto tiene que suceder después de que finalice toda la animación de empuje, por lo que el cambio de esta propiedad es bien notable.
Sin embargo, en caso de que la barra inferior también tenga que ser translúcida y no quiero que el usuario vea el cambio, lo resolví con lo siguiente:
Luego, en el
viewDidAppear:
I simplemente revierte eso:Hay solo un pequeño cambio en la apariencia, especialmente, pero apenas se nota y es mucho mejor que tener la sombra debajo de la barra de navegación.
Espero que ayude a otros a mantener las barras translúcidas hasta que Apple corrija este comportamiento, ya que las barras ESTÁN destinadas a estar ocultas en algunos casos, a diferencia de lo que se sugirió en otras publicaciones, especialmente para
UITabBar
fuente
view.backgroundColor
para su UITabBarController en el guión gráfico y configúrelo en un color blanco.Esto me funciona en Swift
En
AppDelegate
eldidFinishLaunchingWithOptions
método, configuro esto:fuente
Esto me funciona en iOS 13 con temas claros y oscuros y también en versiones anteriores de iOS.
Agregue el siguiente código a AppDelegate al
application(didFinishLaunchingWithOptions)
método:fuente
Aquí está mi variación ... requiere mucho menos código que la respuesta de Tom y es más eficiente. Esto es SI desea una barra de navegación translúcida y también desea solucionar ese problema de sombra.
En el ViewController de origen (que está incrustado en el controlador de navegación) ...
y
El resultado es el mismo que hace Tom (visualmente, para el usuario final) y es más fácil de implementar. Espero que esto ayude...
fuente
Esto funciona para mí, colóquelo dentro de la función donde empuja el nuevo ViewController
fuente
Lo siguiente también funciona y deja transparente la barra de navegación:
[UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor whiteColor];
fuente
Si bien no es lo mismo que la implementación estándar de iOS, esta es una buena manera de solucionar el problema:
Obtendrá una bonita animación de aparición / desaparición gradual de la barra de pestañas. Agrega el código en la raíz
UIViewController
.fuente
O si está utilizando el generador de interfaces, puede seleccionar la barra de navegación desde su controlador de navegación y desmarcar la casilla de verificación Translúcida entre Estilo y Tinte de barra en el Inspector de atributos para deshacerse de ese efecto extraño:
fuente