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?
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?
L'iPhone 6+ rend en interne en utilisant des ressources @3x à une résolution virtuelle de 2208×1242 (avec 736x414 points), puis échantillonne cela pour l'affichage. La même chose que d'utiliser une résolution mise à l'échelle sur un MacBook Retina - cela leur permet d'atteindre un multiple entier pour les ressources pixel tout en ayant par exemple un texte de 12 pt qui semble de la même taille à l'écran.
Donc, oui, les écrans de lancement doivent être de cette taille.
Le 6, le 5s, le 5, le 4s et le 4 sont tous à 326 pixels par pouce, et utilisent des ressources @2x pour rester aux environs de 160 points par pouce de tous les appareils précédents.
Le 6+ est à 401 pixels par pouce. Donc il aurait hypothétiquement besoin de ressources @2,46x environ. Au lieu de cela, Apple utilise des ressources @3x et redimensionne la sortie complète à environ 84% de sa taille naturelle.
En pratique, Apple a décidé d'opter pour quelque chose plus proche de 87%, transformant le 1080 en 1242. Sans aucun doute, cela était fait pour trouver quelque chose aussi proche que possible de 84 % tout en produisant des tailles entières dans les deux directions - 1242/1080 = 2208/1920 exactement, alors que si vous aviez transformé le 1080 en, disons, 1286, vous auriez dû somehow rendre 2286,22 pixels verticalement pour bien s'échelonner.
Comment l'as-tu calculé-> "résolution virtuelle de 2208×1242 (avec 736x414 points)" et cela "nécessite environ @2.46x ressources" Que renverra UIScreen mainScreen].bounds.size.height pour un iPhone 6+ ? 568, 568*3 (1704) ou 1920.
Peut-être ajouter une note à cette réponse à propos des images de lancement ? (voir la réponse de Hannes) Utile à garder à l'esprit pour les applications existantes en cours de mise à jour (sinon, elles s'exécutent à 320x576 @3x - j'étais confus pendant un moment !)
@msk [UIScreen mainScreen].bounds.size.height
retourne 736 dans le simulateur iPhone 6+ lorsque en mode portrait. C'est la valeur 2208 divisée par l'échelle de 3. La largeur est de 414.
La réponse est que les anciennes applications s'exécutent en mode Zoom 2208 x 1242. Mais lorsque une application est construite pour les nouveaux téléphones, les résolutions disponibles sont: 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 provoque la confusion mentionnée dans la question. Pour construire des applications qui utilisent la taille d'écran complète des nouveaux téléphones, ajoutez des LaunchImages dans les tailles suivantes: 1125 x 2436, 1242 x 2208, 2208 x 1242 et 750 x 1334.
Taille pour iPhone 12 Pro Max avec échelle @3x, espace de coordonnées: 428 x 926 points et 1284 x 2778 pixels, 458 ppi, taille physique de l'appareil est de 3.07 x 6.33 pouces ou 78.1 x 160.8 mm. Écran Super Retina XDR de 6.7 pouces.
Taille pour iPhone 12 Pro avec échelle @3x, espace de coordonnées: 390 x 844 points et 1170 x 2532 pixels, 460 ppi, taille physique de l'appareil est de 2.82 x 5.78 pouces ou 71.5 x 146.7 mm. Écran Super Retina XDR de 6.1 pouces.
Taille pour iPhone 12 avec échelle @2x, espace de coordonnées: 585 x 1266 points et 1170 x 2532 pixels, 460 ppi, taille physique de l'appareil est de 2.82 x 5.78 pouces ou 71.5 x 146.7 mm. Écran Super Retina XDR de 6.1 pouces.
Taille pour iPhone 12 mini avec échelle @2x, espace de coordonnées: 540 x 1170 points et 1080 x 2340 pixels, 476 ppi, taille physique de l'appareil est de 2.53 x 5.18 pouces ou 64.2 x 131.5 mm. Écran Super Retina XDR de 5.4 pouces.
Taille pour iPhone 11 Pro Max avec échelle @3x, espace de coordonnées: 414 x 896 points et 1242 x 2688 pixels, 458 ppi, taille physique de l'appareil est de 3.06 x 6.22 pouces ou 77.8 x 158.0 mm. Écran Super Retina XDR de 6.5 pouces.
Taille pour iPhone 11 Pro avec échelle @3x, espace de coordonnées: 375 x 812 points et 1125 x 2436 pixels, 458 ppi, taille physique de l'appareil est de 2.81 x 5.67 pouces ou 71.4 x 144.0 mm. Écran Super Retina XDR de 5.8 pouces.
Taille pour iPhone 11 avec échelle @2x, espace de coordonnées: 414 x 896 points et 828 x 1792 pixels, 326 ppi, taille physique de l'appareil est de 2.98 x 5.94 pouces ou 75.7 x 150.9 mm. Écran Liquid Retina HD de 6.1 pouces.
Taille pour iPhone X Max avec échelle @3x (nom Apple: Super Retina HD 6.5 display), espace de coordonnées: 414 x 896 points et 1242 x 2688 pixels, 458 ppi, taille physique de l'appareil est de 3.05 x 6.20 pouces ou 77.4 x 157.5 mm.
let screen = UIScreen.main
print("Limites de l'écran : \(screen.bounds), Résolution de l'écran : \(screen.nativeBounds), échelle : \(screen.scale)")
//Limites de l'écran iPhone X Max : (0.0, 0.0, 414.0, 896.0), Résolution de l'écran : (0.0, 0.0, 1242.0, 2688.0), échelle : 3.0
Taille pour iPhone X avec échelle @2x (nom Apple: Super Retina HD 6.1" display), espace de coordonnées: 414 x 896 points et 828 x 1792 pixels, 326 ppi, taille physique de l'appareil est de 2.98 x 5.94 pouces ou 75.7 x 150.9 mm.
let screen = UIScreen.main
print("Limites de l'écran : \(screen.bounds), Résolution de l'écran : \(screen.nativeBounds), échelle : \(screen.scale)")
//Limites de l'écran iPhone X : (0.0, 0.0, 414.0, 896.0), Résolution de l'écran : (0.0, 0.0, 828.0, 1792.0), échelle : 2.0
Taille pour iPhone X et iPhone X avec échelle @3x (nom Apple: Super Retina HD 5.8" display), espace de coordonnées: 375 x 812 points et 1125 x 2436 pixels, 458 ppi, taille physique de l'appareil est de 2.79 x 5.65 pouces ou 70.9 x 143.6 mm.
let screen = UIScreen.main
print("Limites de l'écran : \(screen.bounds), Résolution de l'écran : \(screen.nativeBounds), échelle : \(screen.scale)")
//Limites de l'écran iPhone X et X : (0.0, 0.0, 375.0, 812.0), Résolution de l'écran : (0.0, 0.0, 1125.0, 2436.0), échelle : 3.0
Taille pour iPhone 6, 6S, 7 et 8 avec échelle @3x (nom Apple: Retina HD 5.5), espace de coordonnées: 414 x 736 points et 1242 x 2208 pixels, 401 ppi, taille physique de l'écran 2.7 x 4.8 pouces ou 68 x 122 mm. Lorsqu'il est exécuté en mode Zoom, c'est-à-dire sans les nouvelles LaunchImages ou choisi dans la Configuration sur iPhone 6 Plus, l'échelle native est de 2.88 et l'écran est de 320 x 568 points, ce qui est la taille native de l'iPhone 5 :
Limites de l'écran : {{0, 0}, {414, 736}}, Résolution de l'écran : >, échelle : 3.000000, échelle native : 3.000000
Taille pour iPhone 6 et iPhone 6S avec échelle @2x (nom Apple: Retina HD 4.7), espace de coordonnées: 375 x 667 points et 750 x 1334 pixels, 326 ppi, taille physique de l'écran 2.3 x 4.1 pouces ou 58 x 104 mm. Lorsqu'il est exécuté en mode Zoom, c'est-à-dire sans les nouvelles LaunchImages, l'écran est de 320 x 568 points, ce qui est la taille native de l'iPhone 5 :
Limites de l'écran : {{0, 0}, {375, 667}}, Résolution de l'écran : >, échelle : 2.000000, échelle native : 2.000000
Et iPhone 5 pour comparaison est de 640 x 1136, iPhone 4 640 x 960.
Voici le code que j'ai utilisé pour vérifier cela (notez que nativeScale ne fonctionne que sur iOS 8) :
UIScreen *mainScreen = [UIScreen mainScreen];
NSLog(@"Limites de l'écran : %@, Résolution de l'écran : %@, échelle : %f, échelle native : %f",
NSStringFromCGRect(mainScreen.bounds), mainScreen.coordinateSpace, mainScreen.scale, mainScreen.nativeScale);
Remarque : Téléchargez les LaunchImages sinon l'application s'exécutera en mode Zoom et n'affichera pas l'échelle correcte, ou les tailles d'écran. En mode Zoom, l'échelle native
et l'échelle
ne seront pas les mêmes. Sur un appareil réel, l'échelle peut être de 2.608 sur l'iPhone 6 Plus, même lorsqu'il ne fonctionne pas en mode Zoom, mais il affichera une échelle de 3.0 lors de l'exécution sur le simulateur.
Je suppose que vous n'avez pas ajouté les nouvelles versions de l'image de lancement. C'est probablement la raison pour laquelle l'application s'exécute en « mode de compatibilité » et que les limites de l'écran sont les anciennes, soit 320x576 sur les deux appareils.
Dès que vous ajoutez les nouvelles tailles d'images de lancement, vous obtenez les tailles d'écran correctes (logiques) : 375x667 pour l'iPhone 6 et 414x736 pour le 6+.
La résolution réelle/physique de l'iPhone 6 Plus est de 1920x1080 mais dans Xcode, vous créez votre interface pour une résolution de 2208x1242 (736x414 points) et sur l'appareil, elle est automatiquement mise à l'échelle à 1920x1080 pixels.
Référence rapide des résolutions de l'iPhone :
Appareil Points Res. Log. Échelle Res. Réelle PPI Ratio Taille
iPhone 12 Pro Max, 13 Pro Max 926x428 2778x1284 3x 2778x1284 458 19.5:9 6.7"
iPhone 12, 12 Pro, 13, 13 Pro 844x390 2532x1170 3x 2532x1170 460 19.5:9 6.1"
iPhone 12 mini, 13 mini 812x375 2436x1125 3x 2340x1080 476 19.5:9 5.4"
iPhone XS Max, 11 Pro Max 896x414 2688x1242 3x 2688x1242 458 19.5:9 6.5"
iPhone XR, 11 896x414 1792x828 2x 1792x828 326 19.5:9 6.1"
iPhone X, XS, 11 Pro 812x375 2436x1125 3x 2436x1125 458 19.5:9 5.8"
iPhone 6+, 6S+, 7+, 8+ 736x414 2208x1242 3x 1920x1080 401 16:9 5.5"
iPhone 6, 6S, 7, 8, SE2 667x375 1334x750 2x 1334x750 326 16:9 4.7"
iPhone 5, 5S, 5C, SE1 568x320 1136x640 2x 1136x640 326 16:9 4.0"
iPhone 4, 4S 480x320 960x640 2x 960x640 326 3:2 3.5"
iPhone 3GS 480x320 480x320 1x 480x320 163 3:2 3.5"
J'ai corrigé et vérifié cette page d'Apple. developer.apple.com/library/archive/documentation/…
Vous devriez probablement arrêter d'utiliser des images de lancement dans iOS 8 et utiliser un storyboard ou un nib/xib.
Dans Xcode 6, ouvrez le menu Fichier
et choisissez Nouveau
Fichier...
iOS
Interface utilisateur
Écran de démarrage
.
Ensuite, ouvrez les paramètres de votre projet en cliquant dessus.
Dans l'onglet Général
, dans la section appelée Icônes d'application et images de lancement
, définissez le Fichier de l'écran de démarrage
sur les fichiers que vous venez de créer (cela définira UILaunchStoryboardName
dans info.plist
).
Notez que pour le moment, le simulateur affichera seulement un écran noir, donc vous devez tester sur un vrai appareil.
Ajout d'un fichier xib d'écran de démarrage à votre projet:
Configuration de votre projet pour utiliser le fichier xib de l'écran de démarrage au lieu du catalogue de ressources:
Presque des instructions parfaites, mais il devrait être Fichier -> NOUVEAU -> Fichier... etc. Il a fallu un certain temps pour trouver le deuxième fichier :) Merci pour l'aide!
Comment faites-vous pour que cela ait l'air bien? Quand j'essaie d'y mettre une image, ça devient très fou.
Si vous ne faites pas que afficher une image et que vous souhaitez afficher l'interface utilisateur pour le chargement, alors c'est une bonne idée, car une image devrait toujours être dans les tailles appropriées, que ce soit dans une storyboard ou non. De même, si vous pouvez dessiner l'image dans le code, alors vous pourriez contourner cela, je suppose.
Sur l'appareil physique, les limites de l'écran principal de l'iPhone 6 Plus sont 2208x1242 et nativeBounds est 1920x1080. Il y a une mise à l'échelle matérielle impliquée pour redimensionner l'affichage physique.
Sur le simulateur, les limites de l'écran principal de l'iPhone 6 Plus sont toutes deux de 2208x1242.
En d'autres termes... Les vidéos, OpenGL et autres éléments basés sur CALayers
qui traitent des pixels traiteront le véritable tampon d'images de 1920x1080 sur l'appareil (ou 2208x1242 en simulation). Les éléments traitant des points dans UIKit
traiteront les limites de 2208x1242 (x3) et seront mis à l'échelle de manière appropriée sur l'appareil.
Le simulateur n'a pas accès au même matériel qui effectue la mise à l'échelle sur l'appareil et il n'y a pas vraiment beaucoup d'avantages à le simuler en logiciel car cela produirait des résultats différents de ceux du matériel. Ainsi, il est logique de définir les nativeBounds
de l'écran principal d'un appareil simulé sur les limites de l'écran principal de l'appareil physique.
iOS 8 a ajouté une API à UIScreen
(nativeScale
et nativeBounds
) pour permettre aux développeurs de déterminer la résolution du CADisplay
correspondant à l'écran du UIScreen
.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Les images de lancement pour l'iPhone 6+ doivent être de 1242x2208 et 2208x1242. Au moins cela assure que les applications fonctionnent correctement dans le simulateur (et cela est documenté dans les normes de conception). Je n'ai pas encore compris pourquoi cela diffère de la taille d'écran physique supposée de 1920x1080.
2 votes
Une très étrange divergence.
14 votes
Excellente explication : paintcodeapp.com/news/iphone-6-screens-demystified
0 votes
Cela pourrait changer dans la version stable de Xcode 6.1. Est-ce le cas ?
4 votes
Pour mettre à jour le lien d'Andreas, consultez le "Guide Ultime des Résolutions iPhone" paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
0 votes
Comment cela s'applique-t-il aux images d'arrière-plan statiques dans les scènes? Donc pas d'images de lancement mais des arrière-plans simples. Faut-il les faire à 2208 ou 1920? Les images d'arrière-plan statiques sont-elles considérées comme étant les mêmes que les images d'écran de lancement? Est-ce que cela ferait une différence en utilisant des arrière-plans parallaxe?