Pregunta

He creado una aplicación multiview que utiliza múltiples controladores para mostrar y controlar vistas. El problema que tengo es que, cuando el simulador carga inicialmente 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 toca la base de la pantalla. Utilicé los atributos de tamaño del generador de interfaz para controlar la vista cuando el iPhone gira y funciona perfectamente. Todos encajan 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. Tus pensamientos son muy apreciados. Tony

¿Fue útil?

Solución

He tenido problemas con las vistas recortadas por estado, navegación y barras de pestañas. He solucionado la mayoría de ellos mediante el uso de la función de métricas simuladas en Interface Builder. De esa manera, lo que está presentando en IB es mucho más preciso de lo que realmente obtendrá.

Otros consejos

Luché con este problema durante días y días, no funcionó ninguna cantidad de violín en IB.

Finalmente conseguí que funcionara agregando esta línea:

mainViewController.view.frame = window.screen.applicationFrame;

a la aplicación: didFinishLaunchingWithOptions: método. (Donde mainViewController es el UIViewController primario).

También me encontré con este problema. Específicamente, cuando se muestra un ADBannerView, toda mi vista se desplazaría y estaría debajo de la barra de estado y dejaría un pequeño espacio vacío del tamaño de la barra de estado en la parte inferior de la pantalla del iPhone. Así es como lo resolví: (la respuesta de Adam 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;

Necesitaba establecer el origen de mi vista debajo de la barra de estado, y eso resolvió el problema para mí.

El problema es que está agregando su controlador " incorrectamente " de acuerdo con los documentos de Apple (aunque en mi humilde opinión Apple lo diseñó mal, ¡el valor predeterminado debería ser que no necesita cambiar!)

si va a tener una barra de estado, Apple requiere que " manualmente " cambie todos sus controladores hacia abajo en 20 píxeles (más exactamente, por la altura de la barra de estado, aunque hoy en día siempre son 20 píxeles, Apple le permite solicitar la altura en tiempo de ejecución, desde la propiedad " statusBarFrame " en UIApplication)

Clases de Apple - p. UINavigationController / UITabBarController: se desplazan automáticamente 20 píxeles hacia abajo 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 20 píxeles adicionales, dejando 20 píxeles de espacio en blanco en la parte superior.

Pero, cuando rotan, esas clases a menudo & "; hazlo bien &"; y volver a su lugar. O viceversa.

c.f. este enlace para obtener una explicación mucho más detallada de lo que está sucediendo y cómo escribir su código de la manera que Apple quiere que usted:

http : //blog.red-glasses.com/index.php/tutorials/iphone-auto-rotation-for-intermediate-developers-tutorial-1/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top