2010-06-25 10 views
12

¿Por qué aparece en un código de ejemplo de Apple (como PhotoScroller) que yo debería hacer lo siguiente en loadView:límites UIScreen frente applicationFrame

CGRect frame = [[UIScreen mainScreen] bounds]; 

en lugar de

CGRect frame = [[UIScreen mainScreen] applicationFrame]; 

¿Tiene una diferencia para obtener el marco de la pantalla principal?

Respuesta

17

ApplicationFrame es el tamaño de pantalla menos el tamaño de la barra de estado (si está visible), bounds es el tamaño de pantalla independientemente de la barra de estado.

Así applicationFrame volvería CGRectMake(0,0,320,460) asumiendo que su aplicación tiene la barra de estado dispuesto a ser visible, mientras que los límites volverían CGRectMake(0,0,320,480) en las mismas condiciones. Esos números están asumiendo tamaños de pantalla de iPhone/iPod Touch.

UIScreen Class Reference

+8

Podría estar equivocado, pero does not applicationFrame devuelve CGRectMake (0, 20, 320, 460)? Donde 20 es el desplazamiento de la barra de estado ... –

+2

No se equivoca, Niels :). El desplazamiento y se informará como 20 con una barra de estado, no 0. – Nate

+0

Hola @jamone, ¿qué pasa si se muestra el punto de acceso personal? Parece tomar 20 puntos de alto (lo mismo que la barra de estado). ¿ApplicationFrame devolvería CGRectMake (0, 40, 320, 440) en 3.5 pulgadas iPhone y CGRectMake (0, 40, 320, 528) en 4 pulgadas uno? – Cong

2

IOS 9 Actualización

Al utilizar la función Dividir vista en el IPAD applicationFrame, devuelve el tamaño de la ventana de la aplicación. bounds siempre devuelve el tamaño del dispositivo.

+2

'-applicationFrame' estaba ** en desuso en iOS 9 ** –

Cuestiones relacionadas