Afin de détecter l'écran Retina de manière fiable sur tous les appareils iOS, vous devez vérifier si l'appareil fonctionne sous iOS4+ et si l'écran Retina est activé. [UIScreen mainScreen].scale
est égal à 2.0. Vous NE POUVEZ PAS supposer qu'un appareil fonctionne sous iOS4+ si la propriété scale
existe, car l'iPad 3.2 contient également cette propriété.
Sur un iPad fonctionnant sous iOS3.2, l'échelle renverra 1,0 en mode 1x et 2,0 en mode 2x - même si nous savons que cet appareil ne contient pas d'écran Retina. Apple a modifié ce comportement dans iOS4.2 pour l'iPad : il renvoie 1,0 en mode 1x et 2x. Vous pouvez le tester vous-même dans le simulateur.
Je teste pour le -displayLinkWithTarget:selector:
sur l'écran principal qui existe dans iOS4.x mais pas dans iOS3.2, puis vérifiez l'échelle de l'écran :
if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
([UIScreen mainScreen].scale == 2.0)) {
// Retina display
} else {
// non-Retina display
}
0 votes
Par curiosité, que faites-vous lorsque vous détectez l'affichage, à part montrer des versions plus grandes de vos œuvres d'art ?
4 votes
Duplication possible de Comment différencier l'iphone4 de l'iphone 3 ?
0 votes
@mbehan : J'ai un TTImageView (voir cadre Three20) et je veux donner une url haute résolution de l'image.
1 votes
Cette question m'est également utile car j'ai téléchargé des images qui se présentent comme des interfaces utilisateur disponibles dans des tailles correspondant aux quatre tailles d'affichage et je souhaite que les utilisateurs téléchargent uniquement celle qui convient.
0 votes
@mbehan : dans mon cas, je voulais des séparateurs de cellules personnalisés qui sont 1px à la fois sur les écrans retina & non-retina (comme les séparateurs natifs). Le réglage de l'épaisseur à 1px donne un rendu de 2px sur les écrans retina (évidemment).
0 votes
N'oubliez pas qu'avec l'iPhone 6 et 6 plus, vous devez tester l'échelle ">= 2.0", et pas seulement "== 2.0".