He creado una aplicación de vistas múltiples que usa varios controladores para mostrar y controlar vistas. El problema que tengo es que, cuando el simulador inicialmente carga la vista, el encabezado está parcialmente cubierto por la barra en la parte superior de la pantalla y la barra de herramientas en la base no está tocando la base de la pantalla. Usé los atributos de tamaño de constructor de interfaz para controlar la vista cuando el iphone gira y funciona perfectamente. Todo encaja perfectamente en el modo horizontal y vertical DESPUÉS de una rotación, pero el problema es con la carga inicial antes de que ocurra una rotación. Sus pensamientos son muy apreciados. TonyUIView Clipped By Statusbar until Autorotate
Respuesta
He tenido problemas con las vistas recortadas por estado, navegación y barras de pestañas. He solucionado la mayoría de ellos utilizando la función Métricas simuladas en Interface Builder. De esta manera, lo que expones en IB es mucho más preciso de lo que realmente obtendrás.
Tuve que lidiar con este problema durante días y días; no funcionó ninguna cantidad de manipulación en IB.
En última instancia lo tengo para trabajar mediante la adición de esta línea:
mainViewController.view.frame = window.screen.applicationFrame;
a la aplicación: didFinishLaunchingWithOptions: método. (Donde mainViewController es el UIViewController primario).
El problema es que va a añadir el controlador "incorrectamente", según documentos de Apple (aunque en mi humilde opinión de Apple diseñó mal - el valor por defecto debe ser que usted no necesita cambiar)
si va a tener una barra de estado, Apple requiere que "manualmente" cambie todos sus controladores 20 píxeles (más exactamente, por la altura de la barra de estado, aunque eso es siempre 20 píxeles hoy, Apple le permite solicitar el altura en tiempo de ejecución, desde la propiedad "statusBarFrame" en UIApplication)
clases de Apple - por ejemplo UINavigationController/UITabBarController: se desplazan 20 píxeles automáticamente cuando se agregan a la pantalla. Ambas clases tienen un error en el que harán este cambio , incluso si no son el controlador principal, por lo que su aplicación cambia repentinamente unos 20 píxeles adicionales, dejando 20 píxeles de espacio en blanco en la parte superior.
Pero, cuando giran, esas clases a menudo "hacen las cosas bien" y vuelven a su lugar. O viceversa.
c.f. este enlace para obtener una explicación mucho más detallada de lo que está pasando, y la forma de escribir el código de la forma de Apple quiere que:
me encontré con este problema también. Específicamente, al mostrar un ADBannerView
, toda mi vista cambiará y estará debajo de la barra de estado y dejará un pequeño espacio vacío del tamaño de la barra de estado en la parte inferior de la pantalla del iPhone. He aquí cómo lo resolví: (respuesta de Adán aquí me ayudó a resolver esto):
// In the function that displays an iAD Banner
CGRect contentFrame = self.view.bounds;
CGRect myStatusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
CGFloat statusHeight = myStatusBarFrame.size.height;
// Set the view's origin to be under the status bar.
contentFrame.origin.y = statusHeight;
que necesitaba para establecer el origen de mi fin de estar por debajo de la barra de estado, y que resuelto el problema para mí.
- 1. Agregar UIView sobre todas las demás vistas, incluyendo StatusBar
- 2. Agregar vista en StatusBar en iPhone
- 3. Ocultar StatusBar de MPMoviePlayerController
- 4. UINavigationBar Aparece bajo StatusBar
- 5. sleep-until in C#
- 6. Deferir viewWillAppear until webViewDidFinishLoad
- 7. Regex Until pero no incluida
- 8. Cómo ocultar StatusBar en Android 4
- 9. iPhone Safari screen.availHeight and statusbar/toolbar/addressbar
- 10. Graph api - Me gusta/until - since
- 11. ¿Hay un "do ... until" en Python?
- 12. Diferencia entre "while" y "until" en Bash
- 13. function wait with return until $ .getJSON finaliza
- 14. popViewController no autorotate nuevo a la orientación permitido
- 15. ¿Hay un ciclo do-until (poscondición) en Scala 2.8?
- 16. Backbone.Marionette: Defer view close until beforeCerrar animación se completó
- 17. ¿Cómo se puede hacer Scala Control Abstraction in Repeat Until?
- 18. Deshabilitar la rotación automática para una UIView
- 19. UIView duplicado
- 20. SQL Server: Diferencia entre PARTITION BY y GROUP BY
- 21. GRUPO BY la consulta ignora la cláusula ORDER BY
- 22. ¿Cómo usar la partición by order by in over function?
- 23. Índice de MySQL para Group By/Order By
- 24. Cómo combinar GROUP BY, ORDER BY y HABER
- 25. El uso de ORDER BY y GROUP BY junto
- 26. Python max-by function?
- 27. CakePHP y GROUP BY
- 28. GROUP_CONCAT ORDER BY
- 29. MySQL Group By Hours
- 30. múltiplos By con LINQ
Gracias! Estaba luchando con este problema después de crear mi controlador de vista principal de forma manual.Algo en el controlador (una ventana emergente de una vista publicitaria) estaba causando que los niños en la vista cambiasen por la altura de la barra de estado después de que se descartara el anuncio. – DPlusV
+1 porque perdí dos horas tratando de encontrar esta respuesta! –
estaba teniendo el mismo problema, esto funcionó para mí. –