Come si possono ottenere le dimensioni dello schermo in iOS?
Il problema con il codice che hai pubblicato è che stai contando sulla dimensione della vista per corrispondere a quella dello schermo, e come hai visto non è sempre il caso. Se hai bisogno delle dimensioni dello schermo, dovresti guardare l'oggetto che rappresenta lo schermo stesso, in questo modo:
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
Aggiornamento per vista divisa: nei commenti, Dmitry ha chiesto:
Come posso ottenere le dimensioni dello schermo nella vista divisa?
Il codice sopra riportato riporta le dimensioni dello schermo, anche in modalità schermo diviso. Quando si utilizza la modalità schermo diviso, la finestra dell'app cambia. Se il codice sopra non ti dà le informazioni che ti aspetti, quindi come l'OP, stai guardando l'oggetto sbagliato. In questo caso, tuttavia, dovresti guardare la finestra anziché lo schermo, in questo modo:
CGRect windowRect = self.view.window.frame;
CGFloat windowWidth = windowRect.size.width;
CGFloat windowHeight = windowRect.size.height;
Rapido 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