solid guidelines color bar ios uinavigationcontroller uikit uinavigationbar ios11

ios - guidelines - set navigation bar swift



El fondo personalizado UINavigationBar de iOS 11 siempre se extiende debajo de la barra de estado (1)

Estoy aplicando un fondo personalizado a las barras de navegación de mi navegador

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navbar"] forBarPosition:UIBarPositionTop barMetrics:UIBarMetricsDefault];

iOS10

En iOS10, el fondo se aplica correctamente y la barra de navegación aparece debajo de la barra de estado:

iOS11

Sin embargo, en iOS11, parece que la imagen de fondo siempre se aplica detrás de la barra de estado. He intentado diferentes valores para ''forBarPosition'' pero esto no cambia el comportamiento.

He aislado el problema en una aplicación independiente con un controlador uinavigation único y una sola línea de código como el anterior. Estoy probando esto usando el simulador de iPhone 8. Estoy usando el controlador de navegación estándar y la clase de barra de navegación en mi aplicación.

¿Qué estoy haciendo mal?


Me encontré con el mismo problema. Al igual que usted, forBarPosition no hizo nada para solucionar el problema, aunque parece que debería hacerlo.

Llamaría a mi solución una solución.

La imagen que estaba usando tenía 44px de alto. Como sabía que la barra de estado era de 20 píxeles, creé una nueva imagen de 64 píxeles de alto. El efecto que estaba buscando incluía extender la imagen debajo de la barra de estado y esto está funcionando como yo quiero.

La barra de estado es transparente, por lo que puede hacer que los 20 píxeles superiores sean negros o transparentes o lo que sea que desee para obtener el efecto deseado.

Hasta ahora, esto funciona para mí en el simulador y el dispositivo SE de iPhone tanto en iOS 11 como en el dispositivo iPod touch con iOS 9.3.5.

Espero que esto te ayude.

EDITAR: Un punto adicional. Lo que también funcionó para mí fue usar una imagen extensible . Esto llenó todo el espacio sin repetir como lo hace en su ejemplo, sin embargo, la imagen que estaba usando no se puede extender, por lo que en última instancia, esto no funcionó para mi escenario.