Вот «быстрое» решение:
(Обновлено для Swift 3.x)
let screenWidth = UIScreen.main.fixedCoordinateSpace.bounds.width
let screenHeight = UIScreen.main.fixedCoordinateSpace.bounds.height
В отчетах указываются точки, а не пиксели, и «всегда отражают [s] размеры экрана устройства в портретной ориентации» (Apple Docs) . Не нужно беспокоиться о UInnoyinglyLongDeviceOrientation!
Если вы хотите, чтобы ширина и высота отражали ориентацию устройства:
let screenWidth = UIScreen.main.bounds.width
let screenHeight = UIScreen.main.bounds.height
Здесь ширина и высота будут отображать значения флопа в зависимости от того, находится ли экран в книжной или альбомной ориентации.
А вот как получить размер экрана, измеренный в пикселях , а не в точках:
let screenWidthInPixels = UIScreen.main.nativeBounds.width
let screenHeightInPixels = UIScreen.main.nativeBounds.height
Это также «основано на устройстве в книжной ориентации. Это значение не изменяется при вращении устройства». (Apple Docs)
Обратите внимание, что для быстрой версии 2.x и ниже следует использовать UIScreen.mainScreen()
вместо UIScreen.main