Résolution de l'écran de l'iPhone XR en fonction des captures d'écran, du site Web Apple, etc.
828 x 1792
Résolution d'écran de l'iPhone XR selon Swift:
375x812 (ou 750x1624)
Pourquoi et comment y faire face?!
REMARQUE: tous les iphones Xx fonctionnent correctement à l'exception de celui-ci - iphone XR (+ simulateur iphone XR)
4 Réponses :
Vous obtenez la résolution de l'iphone X, et cela se produit probablement parce que vous utilisez l'iphone X dans le storyboard. Le code vous donne d'abord la résolution du storyboard. Si vous voulez obtenir la taille réelle, appelez la méthode layoutIfNeeded () avant le code qui utilise la résolution
UIScreen.main.bounds
devrait obtenir le rect avec une taille qui n'est pas modifiée sur le même appareil pendant le temps. Même en rotation, la largeur et la hauteur sont permutées mais la paire de leurs valeurs n'est pas modifiée
yep UIScreen.main.bounds devrait toujours avoir la bonne taille mais ce n'est pas une bonne pratique de l'utiliser. Vous pouvez l'utiliser dans des situations complexes, lorsque vous ne pouvez pas obtenir la taille de l'écran d'une autre manière
homme je le sais mais le problème que je décris est que toutes ces méthodes renvoient taille x échelle
mais l'appareil a une résolution taille2 x échelle
et taille <> taille2
Il y a une différence entre la taille physique de l'écran et la taille UIKit (pixels vs points).
UIKit utilise des points, un point peut être composé de plusieurs pixels (c'est là que @ 2x, @ 3x) entre en jeu.
La principale différence entre le XR et les autres appareils X est que le XR utilise @ 2x et les autres appareils sont @ 3x.
Voici la documentation d'Apple à ce sujet: https://developer.apple.com/library/archive/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/Displays/Displays.html
PaintCode a également créé un graphique très pratique pour illustrer ceci:
https://www.paintcodeapp.com/news/ultimate -guide-aux-résolutions-iphone
MODIFIER pour répondre au commentaire de rmaddy.
Si le storyboard est configuré pour afficher l'iPhone X, c'est la taille qui sera renvoyée jusqu'à ce que les vues soient disposées.
Cela n'explique pas pourquoi l'OP voit des références à 828x1792 pixels et un code lui indiquant que c'est 750-x1624.
A édité ma réponse en réponse à votre commentaire, vous faites un bon point
Il existe deux concepts différents: Taille UIKit et Résolution native .
La taille UIKit est représentée par points et est utilisée lorsque vous vous positionnez des vues dans votre projet. Supposons que votre écran mesure 414x896 points et que vous centrez votre vue sur la position [207,448], votre vue sera au centre de l'écran.
La résolution native est représentée par pixels strong> et il indique la quantité de pixels de l'écran de l'appareil. Vous pouvez obtenir la résolution native de l'appareil en multipliant la taille UIKit par le Facteur d'échelle natif qui est individuel pour chaque appareil.
J'ai créé un tableau pour ces tailles, facteurs sclae et résolution pour tous les iPhones qui prend en charge iOS 12
UIScreen.main.nativeBounds
... à partir de ce tableau, vous pouvez voir que votre iPhone Xr a une taille UIKit 414x896 , et non 375x812 comme vous l'avez écrit dans votre question.
Vous pouvez obtenir la taille UIKit de l'appareil en obtenant les limites de l'écran
UIScreen.main.bounds
et la résolution native en obtenant les limites natives
iPhone | UIKit size (points) | Native resolution (pixels) | Native Scale factor -------------|---------------------|----------------------------|-------------------- Xs Max | 414x896 | 1242x2688 | 3 X, Xs | 375x812 | 1125x2436 | 3 Xr | 414x896 | 828x1792 | 2 6+,6s+,7+,8+ | 414x736 | 1080x1920 | 2.608 6,6s,7,8 | 375x667 | 750x1334 | 2 5s,SE | 320x568 | 640x1136 | 2
... chacun d'entre eux fonctionne bien pour l'iPhone Xr, alors vérifiez à nouveau si vous exécutez votre code sur l'iPhone Xr et non sur l'iPhone Xs / X qui a la taille UIKit 375 x 812 . De plus, cette 750x1624 n'est qu'une étrange échelle de résolution native Xr, alors vérifiez si vous ne faites pas de calculs supplémentaires.
man j'ai le même résultat en utilisant nativeBounds
! Même selon votre table résolution native = taille UIKit * échelle native
. En réalité, il semble que le simulateur XR et l'appareil réel fonctionnent comme X / XS mais avec un facteur d'échelle == 2.
@VyachaslavGerchicov êtes-vous sûr d'exécuter votre code sur xr et non sur xs? Regardez le dernier paragraphe de ma réponse
Ceci est dû au fait que le "Zoom d'affichage" est activé sur votre iPhone XR.
Paramètres -> Affichage et luminosité -> Zoom d'affichage -> Régler sur Standard
avez-vous vérifié correctement? Comment avez-vous obtenu la `` résolution d'écran de l'iPhone XR selon Swift '':
affichez le code qui vous donne ces valeurs.
po UIScreen.main.bounds
dans la console