60 votes

Faire face à la taille de l'écran de l'iPad Mini

Le nouvel iPad Mini a un écran de 7,9 pouces. Disposera-t-il d'un écran rétina ? Le logiciel met-il automatiquement à l'échelle les xibs et les storyboards existants ou devons-nous créer deux versions de chacun d'eux ?

Est-ce que nous le traitons de la même manière que nous traitons l'iPhone 5 ?

Comment créer une définition ou une condition pour voir si l'appareil fonctionne avec l'iPad Mini ?

60voto

Les applications fonctionneront bien. Mais si vous avez des éléments d'interface utilisateur très petits, vous devrez peut-être les revoir en raison de la réduction de la taille de l'écran.

56voto

rmaddy Points 79279

Si votre application fonctionne sur un iPad 1 ou un iPad 2, elle fonctionnera telle quelle sur le nouvel iPad mini. Il n'y a pas d'écran rétina sur le mini. Du point de vue de l'application, il est identique à l'iPad 2.

Edit : Il a été demandé comment déterminer si une application fonctionne sur un iPad mini. Il n'y a pas de vérification API pour cela. La taille de l'écran n'aide pas. UI_USER_INTERFACE_IDIOM() n'aide pas. Jusqu'à ce que quelqu'un en possède un, il n'y a aucun moyen de savoir si le UIScreenMode pixelAspectRatio est différent (c'est probablement le même que pour l'iPad 2).

Cela ne laisse qu'une seule possibilité - obtenir le machine de uname() et de coder en dur une vérification contre cette valeur. Ce n'est jamais une approche souhaitée. Et au moment où nous écrivons ces lignes, nous ne savons pas quelle sera cette valeur. Peut-être que iPad5,x en supposant que l'iPad de 4ème génération est iPad4,x .

Edit : Jusqu'à présent, j'ai vu un rapport selon lequel l'iPad mini renvoie iPad2,5 (oui, c'est un cinq à deux virgules) ainsi que iPad2,6 et iPad2,7 pour le nom de la machine.

7voto

Thuggish Nuggets Points 1337

Construire des applications pour la résolution de l'iPad 2. Le nouvel iPad Mini est non-rétina avec une résolution de 1024x768, ce qui signifie que les applications qui fonctionnaient déjà sur un iPad 1 ou iPad 2 fonctionnent automatiquement sur l'iPad Mini.

7voto

johnnelm9r Points 96

Si l'iPad Mini et les iPad non-rétina doivent avoir la même taille d'écran, ne pourriez-vous pas utiliser quelque chose comme ce qui est utilisé pour déterminer si l'écran de l'appareil est un iPhone 5 ou un iPhone 4 :

#define IS_WIDESCREEN5 ( [ [ UIScreen mainScreen ] bounds ].size.height == 568 )
#define IS_WIDESCREEN4 ( [ [ UIScreen mainScreen ] bounds ].size.height == 480 )

Donc pour l'iPad Mini, et les iPad non-retina, faites :

#define IS_PAD ( [ [ UIScreen mainScreen ] bounds ].size.height == 512 )

et pour les iPad retina, oui :

#define IS_RETINA_PAD ( [ [ UIScreen mainScreen ] bounds ].size.height == 1024 )

Cela devrait permettre de différencier les deux types d'écrans et d'éviter de devoir déterminer le modèle exact à l'échelle. L'autre méthode serait d'utiliser la mise en page automatique, mais j'ai une meilleure sensation de contrôle sans elle.

J'espère que cela vous aidera à répondre à la deuxième partie de votre question. Bonne chance :)

7voto

0x7fffffff Points 40133

Je pense que Phil Schiller (le premier vice-président d'Apple) l'a bien dit. événement presse dévoilement de l'iPad Mini (environ 53:00 dans la keynote)

Quelle taille d'écran choisir et pourquoi ? Et l'équipe a travaillé très dur en y réfléchissant. Nous voulons un iPad qui soit capable de faire tourner toutes les ces superbes logiciels écrits pour l'iPad sans que les développeurs aient à à faire le moindre travail...

Il poursuit en disant :

...Et les pixels sont encore plus faciles à mémoriser parce qu'ils sont exactement identiques. L'iPad original et l'iPad 2 ont des dimensions de 1024 par 768 et le nouvel iPad Mini est de 1024 par 768. Cela signifie que tous les logiciels créés pour iPad fonctionnent sur l'iPad Mini sans changement.

Donc, en résumé et pour répondre à votre question, non l'iPad Mini n'a pas d'écran Retina, et vous n'avez pas à faire de travaux supplémentaires. L'iPad Mini utilisera le storyboard ou le xib que vous avez déjà créé pour les iPads.

Ensuite, en ce qui concerne la détection, je ne peux pas encore trouver quelque chose qui le prouve (parce qu'ils ne sont pas encore sortis) mais je serais prêt à parier que les suivants sortiront "iPad Mini".

NSLog(@"%@",[[UIDevice currentDevice] model]);

EDITAR:

NSLog(@"\nMachine ID: %@\nModel: %@\nLocalized Model: %@",machineName(),[[UIDevice currentDevice] model],[[UIDevice currentDevice] localizedModel]);

NSString *machineName()
{

    struct utsname systemInfo;
    uname(&systemInfo);

    return [NSString stringWithCString:systemInfo.machine
                              encoding:NSUTF8StringEncoding];
}

Sur mon iPad Mini 16 Go (Wifi uniquement), ce message revient :

ID de la machine : iPad2,5
Modèle : iPad
Modèle localisé : iPad

Prograide.com

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.

Powered by:

X