web-dev-qa-db-fra.com

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

Le nouvel iPad Mini dispose d'une taille d'écran de 7,9 pouces. At-il un affichage de la rétine? Va-t-il automatiquement mettre à l'échelle les xibs et les story-boards existants ou faut-il créer deux versions de chacun?

La traitons-nous de la même façon que nous traitons avec l'iPhone 5?

Comment créer une définition ou une condition pour savoir si l'appareil exécute iPad Mini?

60
MCKapur

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'affichage de la rétine sur la mini. Du point de vue d'une application, il est identique à l'iPad 2.

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

Cela ne laisse qu'une seule possibilité - obtenir la machine de uname() et coder en dur une vérification par rapport à cette valeur. Ce n'est jamais une approche souhaitée. Et à ce jour, nous ne savons pas quelle sera la valeur. Peut-être iPad5, x en supposant que l’iPad de 4e génération est iPad4, x .

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

56
rmaddy

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

60
Uday Kiran Nelluri

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

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

Donc, pour les iPad Mini et les iPad sans rétine, faites:

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

et pour la rétine iPad faire:

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

Cela devrait permettre de différencier les deux types d’écrans et d’éviter la nécessité de déterminer le modèle exact à des fins d’échelle. La méthode alternative consisterait à utiliser la mise en page automatique, mais j’ai un meilleur sentiment de contrôle sans elle.

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

7
johnnelm9r

Construire des applications pour la résolution iPad 2. Le nouvel iPad Mini est non rétine 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 un iPad Mini.

7
Thuggish Nuggets

Je pense que Phil Schiller (vice-président directeur d’Apple) a dit le mieux dans événement de presse dévoilant l’iPad Mini (environ 53 heures dans le discours liminaire)

Quelle taille d'écran choisissons-nous et pourquoi? Et l'équipe a travaillé très dur. penser à cela. Nous voulons un iPad capable de tout exécuter ce logiciel incroyable écrit pour iPad sans les développeurs ayant faire n'importe quel travail ...

Il poursuit ensuite en disant:

... Et les pixels sont encore plus faciles à mémoriser car ils sont exactement les même. L'iPad d'origine et l'iPad 2 sont 1024 par 768 et le nouveau iPad Mini est 1024 par 768. Cela signifie que tous les logiciels créés pour iPad fonctionne sur l'iPad Mini inchangé.

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 travail supplémentaire. L'iPad Mini utilisera le storyboard ou le xib que vous avez déjà créé pour iPad.

Ensuite, en ce qui concerne la détection, je ne trouve rien qui puisse le prouver (car ils n’ont pas encore été publiés), mais je suis prêt à parier que le texte suivant produira "iPad Mini".

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

MODIFIER:

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 (Wi-Fi uniquement), cela renvoie:

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

7
Mick MacCallum

Vous n'avez rien à faire d'autre. Cela devrait fonctionner automatiquement comme mentionné par Apple. La résolution est toujours la même que l'iPad.

4
iDev

iPad mini utilise la même résolution que les iPad non-rétine, iOS utilisera 1x graphisme . Reportez-vous à ce lien ... lien

4
Sanjeev sharma

Les images pour ipad mini seront identiques pour les ipad 1 et 2. Mais il est également recommandé d'utiliser des images @ 2x pour l'écran de la rétine. Parce que, une fois que votre application est sur App Store, vous ne pouvez pas empêcher les gens de la télécharger sur iPad avec affichage Retina. 

Donc, à ce stade, vous devrez créer des images pour rétine et non rétine.

Par programme, des fichiers xib séparés ne sont PAS nécessaires pour l’affichage de la rétine de l’ipad. Conservez simplement [email protected] pour tous les éléments d’image.

3
CalZone

Pour détecter l'iPad Mini (tous les modèles), j'utilise ce code (testé sur iOS 10.x):

- (BOOL)isIPadMini {
   return [[UIDevice currentDevice].name hasPrefix:@"iPad Mini"];
}
0
Slyv