tab que bar ios objective-c uiviewcontroller uikit ios7

ios - bar - view controller que es



¿Se ve presionada la vista de contenedor como si tuviera una barra UINavigation? (8)

Tengo un UIViewController con una vista de contenedor. Esta vista de contenedor contiene un UITableViewController.

El UIViewController está incrustado en un UINavigationController. Configuré la barra de navegación cambiando el color del tinte, el color del tinte de la barra y los atributos del texto del título, pero cuando intento cambiar la translucidez tengo un problema. He resuelto el problema eliminando todos los demás códigos de personalización. Cada vez que hago esto en UIViewController''s -viewDidLoad :

self.navigationController.navigationBar.translucent = NO;

La Vista del contenedor agrega algo de espacio encima de sí mismo, como si tuviera su propia barra de navegación. Siempre que establezca translúcido en SÍ, la vista muestra todo correctamente. Esto solo sucede en una vista contenida siempre que establezca translúcido en NO.

¿Hay algo que me estoy perdiendo aquí?

Intenté establecer la translucidez en YES en la vista contenida y también configurarlo en oculto, pero nada funcionó. ¿De alguna manera, la vista contenida hereda las propiedades del contenedor principal? ¿Cómo evito este espacio adicional creado en la vista contenida cuando configuro la translucidez en NO ?

Yo esperaría que establecer la translucidez solo afecte a la translucidez, pero no a la posición de las vistas.

Cuando translúcido = SÍ

+---------------------------------+ | | | UINavigationBar | | | +---------------------------------+ | | | | | | | | | | | UITableViewController | | in a Contained View | | | | | | | | | | | | | +---------------------------------+

cuando translúcido = NO

+---------------------------------+ | | | UINavigationBar | | | +---------------------------------+ | | |blank space created on top of view | | +---------------------------------+ | | | | | | | | | | | | | UITableViewController | | in a Contained View | | | +---------------------------------+

PS My View es más complejo que esto, simplemente estoy fallando.


A partir de iOS 7.0, todas las vistas van automáticamente detrás de las barras de navegación, las barras de herramientas y las barras de pestañas para proporcionar lo que Apple denomina "contexto": tener una idea de lo que hay debajo de la interfaz de usuario (aunque borrosa con un efecto de vidrio esmerilado) brinda a los usuarios una idea de otra cosa es justo fuera de la pantalla.

Si esto se está interponiendo en su camino (y honestamente lo hace de manera sorprendentemente frecuente), puede desactivarlo fácilmente para un controlador de vista dado modificando su propiedad edgesForExtendedLayout.

Por ejemplo, si no desea que un controlador de vista vaya detrás de ninguna barra, use esto:

edgesForExtendedLayout = []

Disponible desde iOS 7.0

Source


Esto se debe únicamente a sus problemas de diseño automático, puede que esté ocultando algunas vistas al inicio, solo muestre todas las vistas y verifique si el espacio todavía está allí


Lo anterior en las respuestas anteriores no funcionó para mí. Cuando es translúcido NO, mi ViewController empuja hacia abajo, lo cual está integrado en el controlador de navegación. La solución que funcionó para mí se muestra a continuación.

  1. Ir al inspector de atributos
  2. Seleccione ''Extender bordes'' marcando la casilla titulada Debajo de la barra opaca

La captura de pantalla es atatched

Estoy usando Xcode 9.

Gracias


Lo que se está perdiendo aquí es que una barra de navegación translúcida se encuentra en la parte superior de la vista de su controlador de visualización, mientras que una barra de navegación no translúcida empuja hacia abajo la vista de su controlador de vista (redimensionándolo efectivamente).

Entonces, lo que está sucediendo aquí es que con una barra de navegación translúcida, ese espacio en blanco se oculta debajo de la barra, mientras que cuando la barra no es translúcida, se "empuja hacia abajo".

Hay varias maneras de hacerlo, y esto depende principalmente de si está utilizando el diseño automático o no.


Si este problema ocurre con un guión gráfico (sin tocar la propiedad translúcida en el código), encontré útil verificar la configuración de la barra de navegación y, si es necesario, el archivo fuente del guión gráfico.

(Esto no se aplica completamente a esta pregunta, pero cuando busqué el problema, básicamente solo apareció esta pregunta y tal vez la información ayude a otros con el mismo problema).

Los detalles:

Para acceder a la barra de navegación en el editor de guión gráfico: Mostrar el esquema del documento (Editor de menú -> Mostrar esquema del documento), seleccione la barra de navegación.

Luego, en el panel Utilidades en el lado derecho en el inspector de Atributos, asegúrese de que "Translúcido" no esté marcado.

Si esto no funciona, abra el archivo del guión gráfico en TextEdit, busque el elemento navigationBar y compruebe los atributos opaque o translucent . Quieres translucent="NO" .

(Para abrir la fuente del guión gráfico: en Xcode en el navegador del proyecto, haga clic con el botón derecho en el archivo del guión gráfico. Seleccione "Mostrar en Finder" y en la ventana del Buscador, haga clic derecho en el archivo y seleccione "Abrir con ..." y seleccione TextEdit).

EDITAR: (No sé si estuvo ahí todo el tiempo, pero se puede hacer clic derecho en el archivo del guión gráfico en el navegador del proyecto y seleccionar "Abrir como" -> "Código fuente". No es necesario ir al Finder .)


Solucioné este problema ingresando a IB> Seleccionar la vista> Deseleccionar "Ajustar inserciones de la barra de desplazamiento"


configurando el tableView.opaque = false funcionó para mí


-viewDidLoad este problema agregando esta línea de código en -viewDidLoad :

self.extendedLayoutIncludesOpaqueBars = YES;