Как получить размеры экрана в iOS?
Проблема с кодом, который вы разместили, заключается в том, что вы рассчитываете на размер представления, соответствующий размеру экрана, и, как вы видели, это не всегда так. Если вам нужен размер экрана, вы должны посмотреть на объект, который представляет сам экран, например:
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
Обновление для разделенного просмотра: В комментариях Дмитрий спросил:
Как я могу получить размер экрана в режиме разделенного просмотра?
Приведенный выше код сообщает размер экрана, даже в режиме разделенного экрана. Когда вы используете режим разделенного экрана, окно вашего приложения меняется. Если приведенный выше код не дает ожидаемой информации, то, как и OP, вы смотрите не на тот объект. В этом случае, однако, вы должны смотреть на окно вместо экрана, например так:
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