web-dev-qa-db-fra.com

Résolution de l'iPhone 6 Plus: site Web Xcode ou Apple? Pour le developpement

Le site Web d'Apple affirme que la résolution est de 1080p: 1920 x 1080

Cependant, l'écran de lancement requis par Xcode (8.0 GM lancé aujourd'hui) est de 2208 x 1242.

Qui a raison

Xcode

265
JasonGenX

L'iPhone 6+ effectue le rendu en interne à l'aide de @ 3x actifs à une résolution virtuelle de 2208 × 1242 (avec 736x414 points), puis échantillonne ce résultat pendant afficher. Identique à l’utilisation d’une résolution mise à l’échelle sur un MacBook Retina - cela leur permet d’atteindre un multiple entier d’actifs de pixels tout en conservant par exemple, par exemple. Le texte 12 pt a la même taille à l’écran.

Donc, oui, les écrans de lancement doivent avoir cette taille.

Les maths:

Les 6, les 5, les 5, les 4 et les 4 mesurent tous 326 pixels par pouce et utilisent des ressources @ 2x pour respecter les quelque 160 points par pouce de tous les périphériques précédents.

Le 6+ est de 401 pixels par pouce. Donc, il aurait théoriquement besoin d'environ @ 2,46 actifs. Au lieu de cela, Apple utilise les ressources @ 3x et réduit la sortie complète à environ 84% de sa taille naturelle.

Dans la pratique, Apple a décidé d’en faire plus avec 87%, transformant ainsi le 1080 en 1242. Nul doute que c’était de trouver un résultat aussi proche que possible de 84% qui produisait encore des tailles intégrales dans les deux sens - 1242/1080 = 2208/1920 exactement, alors que si vous aviez converti le 1080 en, disons, 1286, vous auriez en quelque sorte besoin de restituer 2286,22 pixels verticalement pour une bonne mise à l’échelle.

308
Tommy

La réponse est que les anciennes applications fonctionnent en mode zoomé 2208 x 1242. Mais quand une application est construite pour les nouveaux téléphones, les résolutions disponibles sont les suivantes: Super Retina HD 5.8 (iPhone X) 1125 x 2436 (458ppi) , Retina HD 5.5 ( iPhone 6, 7, 8 Plus ) 1242 x 2208 et Retina HD 4.7 ( iPhone 6 ) 750 x 1334 . Cela cause la confusion mentionnée dans la question. Pour créer des applications utilisant la taille plein écran des nouveaux téléphones, ajoutez LaunchImages dans les tailles suivantes: 1125 x 2436, 1242 x 2208, 2208 x 1242 et 750 x 1334.

Mis à jour pour les nouveaux iPhones X ????, X ???? et X ???? Max

Taille pour iPhone X ???? Max avec @ 3 x mise à l'échelle (nom Apple: écran Super Retina HD 6.5 "), espace de coordonnées: 414 x 896 points et 1242 x 2688 pixels, 458 ppp, la taille physique du périphérique est de 3,05 x 6,20 po ou 77,4 x 157,5 mm.

let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X???? Max Screen bounds: (0.0, 0.0, 414.0, 896.0), Screen resolution: (0.0, 0.0, 1242.0, 2688.0), scale: 3.0

Taille pour iPhone X ???? avec @ 2x mise à l'échelle (Apple nom: Super Retina HD 6.1 "écran ), espace de coordonnées: 414 x 896 points et 828 x 1792 pixels, 326 ppp, la taille physique du périphérique est de 2,98 x 5,94 in ou 75,7 x 150,9 mm.

let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X???? Screen bounds: (0.0, 0.0, 414.0, 896.0), Screen resolution: (0.0, 0.0, 828.0, 1792.0), scale: 2.0

Taille pour iPhone X ???? et iPhone X avec @ 3x mise à l'échelle (nom Apple: Super Retina HD 5.8 "affichage ), coordonnées espace: 375 x 812 points et 1125 x 2436 pixels, 458 ppp , la taille physique du périphérique est de 2,79 x 5,65 pouces ou 70,9 x 143,6 mm.

let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X???? and X Screen bounds: (0.0, 0.0, 375.0, 812.0), Screen resolution: (0.0, 0.0, 1125.0, 2436.0), scale: 3.0

enter image description here

Taille pour iPhone 6, 6S, 7 et 8 avec @ 3x (Nom Apple: Retina HD 5.5 ), espace de coordonnées: 414 x 736 points et 1242 x 2208 pixels, 401 ppp, la taille physique de l'écran est 2,7 x 4,8 in ou 68 x 122 mm . En mode zoom, c'est-à-dire sans les nouvelles LaunchImages ou choisies dans la configuration de l'iPhone 6 Plus, l'échelle native est de 2,88 et l'écran est de 320 x 568 points, ce qui correspond à la taille native de l'iPhone 5:

Screen bounds: {{0, 0}, {414, 736}}, Screen resolution: <UIScreen: 0x7f97fad330b0; bounds = {{0, 0}, {414, 736}};
mode = <UIScreenMode: 0x7f97fae1ce00; size = 1242.000000 x 2208.000000>>, scale: 3.000000, nativeScale: 3.000000

Taille pour iPhone 6 et iPhone 6S avec redimensionnement @ 2x (nom Apple) : Retina HD 4.7 ), espace de coordonnées: 375 x 667 points et 750 x 1334 pixels, 326 ppp, la taille physique de l'écran est de 2,3 x 4,1 in ou 58 x 104 mm . En mode zoom, c’est-à-dire sans les nouvelles LaunchImages, l’écran affiche 320 x 568 points, ce qui correspond à la taille native de l’iPhone 5:

Screen bounds: {{0, 0}, {375, 667}}, Screen resolution: <UIScreen: 0x7fa01b5182d0; bounds = {{0, 0}, {375, 667}};
mode = <UIScreenMode: 0x7fa01b711760; size = 750.000000 x 1334.000000>>, scale: 2.000000, nativeScale: 2.000000

Et iPhone 5 à des fins de comparaison est de 640 x 1136, iPhone 4 640 x 960.


Voici le code que j'ai utilisé pour vérifier ceci (notez que nativeScale ne fonctionne que sur iOS 8):

UIScreen *mainScreen = [UIScreen mainScreen];
NSLog(@"Screen bounds: %@, Screen resolution: %@, scale: %f, nativeScale: %f",
          NSStringFromCGRect(mainScreen.bounds), mainScreen.coordinateSpace, mainScreen.scale, mainScreen.nativeScale);

Remarque: téléchargez LaunchImages, sinon l'application s'exécutera en mode zoomé sans afficher la mise à l'échelle correcte ni les tailles d'écran. En mode zoomé, nativeScale et scale ne seront pas les mêmes. Sur un appareil, l'échelle peut être 2,608 sur l'iPhone 6 Plus, même si ce n'est pas le cas. fonctionnant en mode zoomé, mais il affichera une échelle de 3,0 lorsqu’il sera exécuté sur le simulateur.

Comparing iPhone 6 and 6 Plus

113
Hannes Sverrisson

La résolution réelle/physique de l'iPhone 6 Plus est de 1920x1080, mais dans Xcode, l'interface est définie pour une résolution de 2208x1242 (736x414 points). Sur l'appareil, elle est automatiquement réduite à 1920x1080 pixels.

référence rapide des résolutions iPhone:

Device          Points    Pixels     Scale  Physical Pixels   Physical PPI  Size
iPhone X        812x375   2436x1125  3x     2436x1125         458           5.8"
iPhone 6 Plus   736x414   2208x1242  3x     1920x1080         401           5.5"
iPhone 6        667x375   1334x750   2x     1334x750          326           4.7"
iPhone 5        568x320   1136x640   2x     1136x640          326           4.0"
iPhone 4        480x320   960x640    2x     960x640           326           3.5"
iPhone 3GS      480x320   480x320    1x     480x320           163           3.5"

iPhone resolutions

96
Leszek Szary

Vous devriez probablement cesser d'utiliser les images de lancement dans iOS 8 et utiliser un storyboard ou nib/xib.

  • Dans Xcode 6 , ouvrez le menu File et choisissez NewFile...iOSUser InterfaceLaunch Screen.

  • Ensuite, ouvrez le paramètres de votre projet en cliquant dessus.

  • Dans l'onglet General, dans la section intitulée App Icons and Launch Images, définissez le Launch Screen File sur les fichiers que vous venez de créer (cela définira UILaunchStoryboardName dans info.plist).

Notez que pour le moment, le simulateur n'affichera qu'un écran noir, vous devez donc tester sur un appareil réel.

Ajout d'un fichier xib Ecran de lancement à votre projet:

Adding a new Launch Screen xib file

Configuration de votre projet pour utiliser le fichier xib Launch Screen au lieu du catalogue d'actifs:

Configure project to use Launch Screen xob

46
davidisdk

Sur le périphérique physique, les limites de l'écran principal de l'iPhone 6 Plus sont 2208x1242 et nativeBounds est 1920x1080 . La mise à l'échelle matérielle est nécessaire pour redimensionner l'affichage physique.

Sur le simulateur, les limites de l'écran principal de l'iPhone 6 Plus et celles de NativeBounds sont toutes les deux de 2208x1242.

En d'autres termes ... Les vidéos, OpenGL et autres éléments basés sur CALayers traitant de pixels traitent du réel 1920x1080 frame frame sur le périphérique (ou 2208x1242 sur sim). Les choses traitant de points dans UIKit seront traitées avec les bornes 2208x1242 (x3) et seront mises à l'échelle selon le cas sur l'appareil.

Le simulateur n'a pas accès au même matériel que celui qui effectue la mise à l'échelle sur l'appareil et il n'est pas vraiment avantageux de le simuler dans un logiciel, car il produirait des résultats différents de ceux du matériel. Il est donc judicieux de régler la nativeBounds de l'écran principal d'un périphérique simulé sur les limites de l'écran principal du périphérique physique.

iOS 8 a ajouté une API à UIScreen (nativeScale et nativeBounds) pour permettre à un développeur de déterminer la résolution de CADisplay correspondant à UIScreen.

24

Pour ceux qui, comme moi, se demandent comment sont traitées les applications traditionnelles, j'ai fait quelques essais et calculs sur le sujet.

Grâce à @ hannes-sverrisson, j'ai commencé à penser qu'une application existante est traitée avec une vue 320x568 sur iPhone 6 et iPhone 6 plus.

Le test a été réalisé avec un simple fond noir [email protected] avec une bordure blanche. L'arrière-plan a une taille de 640x1136 pixels et il est noir avec une bordure blanche intérieure de 1 pixel.

Voici les captures d'écran fournies par le simulateur:

Sur la capture d'écran de l'iPhone 6, vous pouvez voir une marge de 1 pixel en haut et en bas de la bordure blanche et une marge de 2 pixels sur la capture d'écran de l'iPhone 6 plus. Cela nous donne un espace utilisé de 1242x2204 sur l'iPhone 6 plus, au lieu de 1242x2208, et de 750x1332 sur l'iPhone 6, au lieu de 750x1334.

Nous pouvons supposer que ces pixels morts sont censés respecter le rapport de forme de l'iPhone 5:

iPhone 5               640 / 1136 = 0.5634
iPhone 6 (used)        750 / 1332 = 0.5631
iPhone 6 (real)        750 / 1334 = 0.5622
iPhone 6 plus (used)  1242 / 2204 = 0.5635
iPhone 6 plus (real)  1242 / 2208 = 0.5625

Deuxièmement, il est important de savoir que les ressources @ 2x seront mises à l'échelle non seulement sur l'iPhone 6 plus (qui attend @ 3 actifs), mais également sur l'iPhone 6. Cela s'explique probablement par le fait que l'absence de mise à l'échelle des ressources aurait conduit à des dispositions inattendues. à l'élargissement de la vue.

Cependant, cette mise à l'échelle n'est pas équivalente en largeur et en hauteur. Je l'ai essayé avec une ressource 264x264 @ 2x. Compte tenu des résultats, je dois supposer que la mise à l'échelle est directement proportionnelle au rapport pixels/points.

Device         Width scale             Computed width   Screenshot width
iPhone 5        640 /  640 = 1.0                        264 px
iPhone 6        750 /  640 = 1.171875  309.375          309 px
iPhone 6 plus  1242 /  640 = 1.940625  512.325          512 px

Device         Height scale            Computed height  Screenshot height
iPhone 5       1136 / 1136 = 1.0                        264 px
iPhone 6       1332 / 1136 = 1.172535  309.549          310 px
iPhone 6 plus  2204 / 1136 = 1.940141  512.197          512 px

Il est important de noter que la mise à l'échelle de l'iPhone 6 n'est pas la même en largeur et en hauteur (309x310). Cela tend à confirmer la théorie ci-dessus selon laquelle la mise à l'échelle n'est pas proportionnelle en largeur et en hauteur, mais utilise le rapport pixels/points.

J'espère que ça aide.

13
François Verry

Découvrez cette infographie: http://www.paintcodeapp.com/news/iphone-6-screens-demystified

Il explique les différences entre les anciens iPhone, iPhone 6 et iPhone 6 Plus. Vous pouvez comparer les tailles d'écran en points, en pixels rendus et en pixels physiques. Vous y trouverez également réponse à votre question:

iPhone 6 Plus - avec écran Retina HD. Le facteur de mise à l'échelle est 3 et l'image est ensuite réduite de 2208 × 1242 pixels à 1920 × 1080 pixels.

Le rapport de réduction d'échelle est 1920/2208 = 1080/1242 = 20/23. Cela signifie que tous les 23 pixels du rendu d'origine doivent être mappés à 20 pixels physiques. En d'autres termes, l'image est réduite à environ 87% de sa taille d'origine.

Mise à jour:

Il existe une version mise à jour de l'infographie mentionnée ci-dessus. Il contient des informations plus détaillées sur les différences de résolution d'écran et couvre jusqu'à présent tous les modèles d'iPhone, y compris les appareils 4 pouces.

http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions

12
Darrarski

Même si je n'aime généralement pas le ton du blog Daring Fireball de John Gruber, sa lecture de la plus grande visualisation de l'iPhone vaut la peine d'être lue.

Il a deviné mais a exactement exactement la résolution en points et en pixels pour les deux modèles, sauf qu'il (moi non plus) ne s'attendait pas à Apple pour créer un affichage physique de résolution plus petite et réduire l'échelle (les détails figurent dans la réponse de @ Tommy).

En gros, il faut cesser de penser en termes de pixels et en termes de points (c'est le cas depuis un certain temps, ce n'est pas une invention récente) et la taille physique des éléments de l'interface utilisateur qui en résulte. En bref, les deux nouveaux modèles d'iPhone s'améliorent à cet égard, car la plupart des éléments restent physiquement de la même taille. Vous pouvez simplement en afficher davantage sur l'écran (pour chaque écran plus grand, vous pouvez en installer davantage).

Je suis juste un peu déçu de ne pas avoir gardé le mappage de la résolution interne sur la résolution d'écran réelle 1: 1 pour le plus grand modèle.

4
rawpower