web-dev-qa-db-fra.com

Comment obtenir la largeur et la hauteur de l'appareil?

En Objective-C, nous pouvons obtenir la largeur et la hauteur d'un appareil en utilisant le code suivant: 

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

Comment peut-on faire ça avec Swift?

60
Divya Bhalodiya

Je n'ai pas essayé mais ça devrait être ..

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

La réponse de @Houssni est correcte, mais étant donné que nous parlons de Swift et que ce cas d'utilisation se présentera souvent, on pourrait envisager d'étendre CGRect comme ceci:

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

Ensuite, vous pouvez l'utiliser comme:

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

Hourra! :)

18
Pascal

Swift 4.2

let screenBounds = UIScreen.main.bounds
let width = screenBounds.width
let height = screenBounds.height
18
Adam Smaka

Si vous voulez l'utiliser dans votre code. Voici.

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

    }


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

Exactement comme ça, testé aussi.

9
h0ussni

(Swift 3) N'oubliez pas que la plupart des valeurs de largeur et de hauteur sont basées sur l'orientation actuelle du périphérique. Si vous voulez une valeur cohérente non basée sur la rotation et offrant des résultats similaires à ceux d'une rotation en portrait, donnez fixedCoordinateSpace a try: 

let screenSize = UIScreen.main.fixedCoordinateSpace.bounds
6
Paul Bonneville

Puisque vous recherchez la taille d'écran de l'appareil, le moyen le plus simple est de:

let screenSize = UIScreen.mainScreen().bounds.size
let width = screenSize.width
let height = screenSize.height
5
jeff-ziligy

Alors que la réponse de @Adam Smaka était proche, voici ce qui suit dans Swift 3:

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

Un objet UIScreen définit les propriétés associées à un affichage basé sur le matériel. Les appareils iOS ont un écran principal et zéro écran ou plus. Chaque objet d'écran définit le rectangle des limites pour l'affichage associé et d'autres propriétés intéressantes. 

Apple Doc URL:

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

Pour obtenir la hauteur/largeur du périphérique de l'utilisateur avec Swift 3.0

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

Dans Swift 4, je devais utiliser NSScreen.main? .DeviceDescription

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