¿Cómo se pueden obtener las dimensiones de la pantalla en iOS?
El problema con el código que publicó es que cuenta con que el tamaño de la vista coincida con el de la pantalla, y como ha visto, ese no es siempre el caso. Si necesita el tamaño de la pantalla, debe mirar el objeto que representa la pantalla en sí, 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 usa el modo de pantalla dividida, la ventana de su aplicación cambia. Si el código anterior no le brinda la información que espera, entonces, al igual que el OP, está buscando el objeto incorrecto. Sin embargo, en este caso, debe mirar la ventana en lugar de la pantalla, de esta manera:
CGRect windowRect = self.view.window.frame;
CGFloat windowWidth = windowRect.size.width;
CGFloat windowHeight = windowRect.size.height;
Swift 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