¿Cómo obtener el ancho y alto de la pantalla en iOS?

Resuelto griotspeak asked hace 54 años • 18 respuestas

¿Cómo se pueden obtener las dimensiones de la pantalla en iOS?

Actualmente uso:

lCurrentWidth = self.view.frame.size.width;
lCurrentHeight = self.view.frame.size.height;

viewWillAppear:y enwillAnimateRotationToInterfaceOrientation:duration:

La primera vez obtengo el tamaño completo de la pantalla. La segunda vez aparece la pantalla sin la barra de navegación.

griotspeak avatar Jan 01 '70 08:01 griotspeak
Aceptado

¿Cómo se pueden obtener las dimensiones de la pantalla en iOS?

El problema con el código que publicaste es que cuentas con que el tamaño de la vista coincida con el de la pantalla y, como has visto, ese no siempre es el caso. Si necesitas el tamaño de la pantalla, debes mirar el objeto que representa la pantalla misma, así:

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;

Actualización para vista dividida: en los comentarios, Dmitry preguntó:

¿Cómo puedo obtener el tamaño de la pantalla en la vista dividida?

El código proporcionado anteriormente informa el tamaño de la pantalla, incluso en modo de pantalla dividida. Cuando usas el modo de pantalla dividida, la ventana de tu aplicación cambia. Si el código anterior no le brinda la información que espera, entonces, al igual que el OP, está mirando el objeto incorrecto. En este caso, sin embargo, deberías mirar la ventana en lugar de la pantalla, así:

CGRect windowRect = self.view.window.frame;
CGFloat windowWidth = windowRect.size.width;
CGFloat windowHeight = windowRect.size.height;

Rápido 4.2

let screenRect = UIScreen.main.bounds
let screenWidth = screenRect.size.width
let screenHeight = screenRect.size.height

// split screen            
let windowRect = self.view.window?.frame
let windowWidth = windowRect?.size.width
let windowHeight = windowRect?.size.height
Caleb avatar Apr 15 '2011 14:04 Caleb

Cuidado, [UIScreen mainScreen] también contiene la barra de estado; si desea recuperar el marco de su aplicación (excluyendo la barra de estado), debe usar

+ (CGFloat) window_height   {
    return [UIScreen mainScreen].applicationFrame.size.height;
}

+ (CGFloat) window_width   {
    return [UIScreen mainScreen].applicationFrame.size.width;
}
Ege Akpinar avatar Nov 22 '2012 12:11 Ege Akpinar