Подтвердить что ты не робот

Как получить ширину и высоту устройства?

В Objective-C мы можем получить ширину и высоту устройства, используя следующий код:

CGRect sizeRect = [UIScreen mainScreen].applicationFrame
float width = sizeRect.size.width
float height = sizeRect.size.height

Как это сделать с помощью Swift?

4b9b3361

Ответ 1

Я не пробовал, но это должно быть..

var bounds = UIScreen.main.bounds
var width = bounds.size.width
var height = bounds.size.height

Ответ 2

Ответ

@Houssni правильный, но поскольку мы говорим о Swift, и этот случай использования часто возникает, можно рассмотреть вопрос о расширении CGRect, аналогичном этому:

extension CGRect {
    var wh: (w: CGFloat, h: CGFloat) {
        return (size.width, size.height)
    }
}

Затем вы можете использовать его как:

let (width, height) = UIScreen.mainScreen().applicationFrame.wh

Ура!:)

Ответ 3

Swift 4.2

let screenBounds = UIScreen.main.bounds
let width = screenBounds.width
let height = screenBounds.height

Ответ 4

Если вы хотите использовать его в своем коде. Здесь вы идете.

func iPhoneScreenSizes(){
    let bounds = UIScreen.mainScreen().bounds
    let height = bounds.size.height

    switch height {
    case 480.0:
        print("iPhone 3,4")
    case 568.0:
        print("iPhone 5")
    case 667.0:
        print("iPhone 6")
    case 736.0:
        print("iPhone 6+")

    default:
        print("not an iPhone")

    }


}

Ответ 5

var sizeRect = UIScreen.mainScreen().applicationFrame
var width    = sizeRect.size.width
var height   = sizeRect.size.height

Точно так же протестировал и его.

Ответ 6

(Swift 3) Имейте в виду, что большинство значений ширины и высоты будут основаны на текущей ориентации устройства. Если требуется согласованное значение, которое не основано на вращении, и предлагает результаты, как если бы вы были в ротации по вертикали, попробуйте fixedCoordinateSpace:

let screenSize = UIScreen.main.fixedCoordinateSpace.bounds

Ответ 7

Поскольку вы ищете размер экрана устройства, самый простой способ:

let screenSize = UIScreen.mainScreen().bounds.size
let width = screenSize.width
let height = screenSize.height

Ответ 8

Хотя ответ @Adam Smaka был близок, в Swift 3 он выглядит следующим образом:

let screenBounds = UIScreen.main.bounds
let width = screenBounds.width
let height = screenBounds.height

Ответ 9

Объект UIScreen определяет свойства, связанные с аппаратным дисплеем. У устройств iOS есть главный экран и нулевые или более подключенные экраны. Каждый экранный объект определяет прямоугольник границ для связанного отображения и другие интересные свойства

URL-адрес Apple Doc:

https://developer.apple.com/reference/uikit/uiwindow/1621597-screen

Получить высоту/ширину пользовательского устройства ur с быстрым 3.0

let screenHeight = UIScreen.main.bounds.height
let screenWidth = UIScreen.main.bounds.width

Ответ 10

В Swift 4 мне пришлось использовать NSScreen.main?.DeviceDescription

let deviceDescription = NSScreen.main?.deviceDescription          
let screenSize = deviceDescription![.size]
let screenHeight = (screenSize as! NSSize).height