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?
Je n'ai pas essayé mais ça devrait être ..
var bounds = UIScreen.main.bounds
var width = bounds.size.width
var height = bounds.size.height
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! :)
Swift 4.2
let screenBounds = UIScreen.main.bounds
let width = screenBounds.width
let height = screenBounds.height
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")
}
}
var sizeRect = UIScreen.mainScreen().applicationFrame
var width = sizeRect.size.width
var height = sizeRect.size.height
Exactement comme ça, testé aussi.
(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
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
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
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
Dans Swift 4, je devais utiliser NSScreen.main? .DeviceDescription
let deviceDescription = NSScreen.main?.deviceDescription let screenSize = deviceDescription![.size] let screenHeight = (screenSize as! NSSize).height