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



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



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


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

626   10  

10 ответов:

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

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

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

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

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

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

Ура! :)

Swift 4

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

Если вы хотите использовать его в вашем коде. Вот, держи.

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")

    }


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

точно так же, как это, проверил его также.

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

let screenSize = UIScreen.main.fixedCoordinateSpace.bounds

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

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

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

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

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

Apple Doc URL:

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

чтобы получить высоту / ширину устройства пользователя ur с помощью swift 3.0

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

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

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

Comments

    Ничего не найдено.