¿Cómo obtener el ancho y alto de la pantalla en iOS?
¿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.
¿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
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;
}