Estoy tratando de mostrar un UILabel encima de un UINavigationController. El problema es que cuando agrego UILabel como una subvista de UIWindow, no gira automáticamente ya que no es una subvista de UIViewController (UIViewController maneja automáticamente las subvistas de actualización durante las rotaciones).Agregando un UINavigationController como una subvista de UIView
Esta es la jerarquía que estaba usando:
- UIWindow
- UILabel
- UINavigationController
Así que estaba pensando que podría utilizar la siguiente jerarquía:
- UIWindow
- UIViewController
- UIView
- UILabel
- UINavigationController
- UIView
- UIViewController
De esta forma, la etiqueta podría mostrarse en la parte superior de la barra de UINavigationController mientras se gira automáticamente ya que es una subvista de UIViewController.
El problema es que cuando intento añadir un UINavigationController como subvista de un punto de vista:
[myViewController.view addSubview:myNavigationController.view];
que aparecerá 20 píxeles hacia abajo. Lo que supongo es porque cree que necesita hacer espacio para la barra de estado. Pero, dado que el UINavigationController se coloca dentro de una UIView que no se superpone en la parte superior de la barra de estado, agrega incorrectamente 20 píxeles adicionales. En otras palabras, la parte superior de UINavigationBar está en la marca de 40 píxeles de la pantalla en lugar de en 20 píxeles.
¿Hay alguna manera fácil de cambiar el UINavigationController y todos sus elementos (por ejemplo, barra de navegación, barra de herramientas, controlador de vista raíz) hasta 20 píxeles? ¿O para hacerle saber que no debería compensar una barra de estado?
Si no, supongo que necesitaría usar mi primera jerarquía mencionada anteriormente y descubrir cómo rotar la etiqueta para que sea coherente con la rotación de la barra de navegación. ¿Dónde puedo encontrar más información sobre cómo hacer esto?
Nota: al "mostrar una etiqueta en la parte superior de la barra de navegación", quiero decir que debe superponerse en la parte superior de la barra de navegación ... simplemente no puede envolverse en un elemento de botón de barra y colocarse como uno de los elementos de la barra de navegación.
uso nav.view.frame = CGRectMake (0,0, self.view.frame.size.width, auto .view.frame.size.height); \t para hacer que esto también funcione en ipad, que no tiene el error +20 pero tiene otros problemas con el ancho y alto, en general es un depósito total, muy descuidado de apple – valexa
Tengo una instancia donde si cargo un UINavigationController ver como una subvista en modo horizontal en el iPad Obtengo el error de 20 píxeles. Pero solo la primera vez. Puedo volver a agregar la supervisión más tarde y el problema desaparecerá. Muy, muy frustrante. –
Parece que tengo el mismo problema. Nada realmente me dice que la barra de navegación tiene un desplazamiento de 20 píxeles verticalmente. @DanielWood Realmente comparto tu frustración. Si presiono y luego selecciono otro controlador, todo está bien, pero la primera vez ... Intento jugar. – Vaseltior