Le nouvel écran de l'iPhone 5 a un nouveau format d'image et une nouvelle résolution (640 x 1136 pixels).
Que faut-il pour développer de nouvelles applications ou faire la transition d'applications déjà existantes vers la nouvelle taille d'écran?
Que devons-nous garder à l'esprit pour rendre les applications "universelles" à la fois pour les anciens écrans et le nouveau rapport largeur / hauteur?
Si vous avez une application conçue pour iPhone 4S ou une version antérieure, elle s'exécutera en boîte aux lettres sur iPhone 5.
Pour adapter votre application au nouvel écran plus grand, la première chose à faire est de changer l'image de lancement en: [email protected]. Sa taille doit être de 1136x640 (HxL). Oui, avoir l'image par défaut dans la nouvelle taille d'écran est la clé pour laisser votre application prendre tout l'écran du nouvel iPhone 5 .
(Notez que la convention de dénomination ne fonctionne que pour l'image par défaut. Nommer une autre image "[email protected]" ne provoquera pas son chargement à la place de "[email protected]". Si vous devez charger des images différentes pour différentes tailles d'écran, vous devrez le faire par programme.)
Si vous êtes très chanceux, c'est peut-être ça ... mais selon toute vraisemblance, vous devrez prendre quelques mesures supplémentaires.
Dans le cas extrême (lorsque rien de ce qui précède ne suffit), concevez les deux Xib et chargez celui qui convient dans le contrôleur de vue.
Pour détecter la taille de l'écran:
la source
La seule chose vraiment nécessaire à faire est d'ajouter une image de lancement nommée "[email protected]" aux ressources de l'application, et en général, si vous avez la chance, l'application fonctionnera correctement.
Dans le cas où l'application ne gère pas les événements tactiles, assurez-vous que la fenêtre de clé a la bonne taille. La solution consiste à définir le cadre approprié:
Il existe d'autres problèmes non liés à la taille de l'écran lors de la migration vers iOS 6. Lisez les notes de publication d'iOS 6.0 pour plus de détails.
la source
Parfois (pour les applications de pré-storyboard), si la mise en page va être suffisamment différente, cela vaut la peine de spécifier un xib différent selon l'appareil (voir cette question - vous devrez modifier le code pour gérer l'iPhone 5) dans le viewController init, car aucune quantité de twiddling avec des masques de redimensionnement automatique ne fonctionnera si vous avez besoin de graphiques différents.
Ceci est utile pour les applications qui ciblent les anciennes versions d'iOS.
la source
Ici vous pouvez trouver un joli tutoriel (pour MonoTouch, mais vous pouvez aussi utiliser les informations pour les projets non-MonoTouch):
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5 -ios-6-aujourd'hui /
Créez une nouvelle image pour votre écran de démarrage / par défaut ( 640 x 1136 pixels ) avec le nom " [email protected] "
Dans le simulateur iOS , accédez au menu Matériel -> Appareil et sélectionnez « iPhone (Retina 4 pouces) »
Créez d'autres images, par exemple des images d'arrière-plan
la source
C'est facile pour migrer iPhone5 et iPhone4 via XIBs .........
la source
Je résous ce problème ici . Ajoutez simplement ~ 568h @ 2x suffixe aux images et ~ 568h aux xib. Plus besoin de vérifications d'exécution ou de modifications de code.
la source
J'avais ajouté la nouvelle image de lancement par défaut et (en vérifiant plusieurs autres réponses SE ...), je me suis assuré que mes storyboards étaient tous auto-dimensionnés et sous-visés, mais la rétine 4 pouces était toujours en boîte aux lettres.
Ensuite, j'ai remarqué que ma liste d'informations avait un élément de ligne pour " Lancer l'image " défini sur " Default.png ", que j'ai donc supprimé et que la boîte aux lettres par magie n'apparaissait plus. J'espère que cela sauvera quelqu'un d'autre de la même folie que j'ai endurée.
la source
Je suppose que cela ne fonctionnera pas dans tous les cas, mais dans mon projet particulier, cela m'a évité la duplication des fichiers NIB:
Quelque part,
common.h
vous pouvez faire ces définitions en fonction de la hauteur de l'écran:Dans votre contrôleur de base:
la source
Dans un
constants.h
fichier, vous pouvez ajouter ces instructions de définition:la source
Pour déterminer si votre application peut prendre en charge l'iPhone 5 Retina, utilisez ceci: (Cela pourrait être plus robuste pour renvoyer le type d'affichage, 4S Retina, etc., mais comme il est écrit ci-dessous, il revient simplement si l'iPhone prend en charge iOS5 Retina en tant que Oui ou non)
Dans un fichier ".h" commun, ajoutez:
Dans un fichier ".m" commun, ajoutez:
la source
Tout d'abord, créez deux xibs et attachez tous les délégués, la classe principale à la
xib
puis vous pouvez mettre dans cette condition mentionnée ci-dessous dans votreappdelegate.m
fichier dansvous pouvez l'utiliser n'importe où dans le programme en fonction de vos besoins, même dans vos
ViewController
cours. Ce qui importe le plus, c'est que vous avez créé deuxxib
fichiers séparés pouriphone 4(320*480) and iphone 5(320*568)
la source
Essayez la méthode ci-dessous dans une classe singleton:
la source
Vous pouvez utiliser la
Auto Layout
fonction et créer le design en utilisant la résolution d'écran de l'iPhone 5 et cela fonctionnera pour les appareils 4 "et 3,5", mais dans ce cas, vous devriez avoir une connaissance suffisante du gestionnaire de disposition.la source
La vérification
bounds
avec568
échouera en mode paysage. L'iPhone 5 ne se lance qu'en mode portrait, mais si vous souhaitez prendre en charge les rotations, l'iPhone 5 "check" devra également gérer ce scénario.Voici une macro qui gère l'état d'orientation:
L'utilisation de l'appel «PreferredMode» provient d'une autre publication que j'ai lue il y a quelques heures, donc je n'ai pas eu cette idée.
la source
Montrez d'abord cette image. Dans cette image, vous voyez un avertissement pour la prise en charge de Retina 4, cliquez sur cet avertissement et cliquez sur ajouter pour que votre écran de démarrage Retina 4 s'ajoute automatiquement à votre projet.
et après avoir utilisé ce code:
la source
Je n'ai jamais rencontré un tel problème avec n'importe quel appareil car j'ai eu une base de code pour tous, sans aucune valeur codée en dur. Ce que je fais, c'est d'avoir l'image de taille maximale en tant que ressource au lieu d'une pour chaque appareil. Par exemple, j'en aurais un pour l'affichage de la rétine et le montrerais comme un aspect approprié pour que ce soit des vues telles quelles sur tous les appareils. Venir à décider du cadre du bouton, par exemple, au moment de l'exécution. Pour cela, j'utilise la valeur% de la vue brevet, par exemple, si je veux que la largeur soit la moitié de la vue parent, prenez 50% du parent et la même chose s'applique pour la hauteur et le centre.
Avec cela, je n'ai même pas besoin des xibs.
la source
Vous pouvez utiliser cette définition pour calculer si vous utilisez l'iPhone 5 en fonction de la taille de l'écran:
puis utilisez une simple
if
déclaration:la source
Peter, vous devriez vraiment jeter un œil à Canappi, il fait tout cela pour vous, tout ce que vous avez à faire est de spécifier la mise en page en tant que telle:
À partir de là, Canappi générera le code objectif-c correct qui détecte l'appareil sur lequel l'application s'exécute et utilisera:
Canappi fonctionne comme Interface Builder et Story Board combinés, sauf qu'il est sous forme textuelle. Si vous avez déjà des fichiers XIB, vous pouvez les convertir pour ne pas avoir à recréer l'intégralité de l'interface utilisateur à partir de zéro.
la source
Vous pouvez vérifier manuellement la taille de l'écran pour déterminer sur quel appareil vous vous trouvez:
la source
Vous pouvez ajouter ce code:
la source
scale
sélecteur activéUIScreen
et vous aurez un cas où votre code de «résolution standard» ne s'exécute pas.Ceci est un vrai code universel, vous pouvez créer 3 story-board différents:
Définissez votre projet en mode universel et définissez votre histoire principale iPhone avec le storyboard iPhone5 et l'ipad principal avec l'iPad storyboard cible, ajoutez maintenant une nouvelle cible de storyboard pour l'iphone et modifiez la résolution pour l'iphone 4s ou moins maintenant implémentez votre AppDelegate.m
iPhone4 / 4s (c'est la même chose pour 3 / 3Gs) un pour iPhone5 et rendre le projet universel , avec une nouvelle cible Storyboard pour iPad, maintenant dans AppDelegate.m sous l'
didFinishLaunching
ajout de ce code:Vous avez donc créé une application universelle pour iPhone 3 / 3Gs / 4 / 4s / 5 All gen of iPod, and All type of iPad
N'oubliez pas d'intégrer tous les IMG avec
myImage.png
et[email protected]
la source
Selon moi, la meilleure façon de traiter de tels problèmes et d'éviter quelques conditions requises pour vérifier la hauteur de l'appareil, est d'utiliser le cadre relatif pour les vues ou tout élément d'interface utilisateur que vous ajoutez à vous par exemple: si vous ajoutez certains éléments d'interface utilisateur que vous voulez devraient en bas de la vue ou juste au-dessus de la barre d'onglets, vous devez prendre l'origine y par rapport à la hauteur de votre vue ou par rapport à la barre d'onglets (le cas échéant) et nous avons également une propriété de redimensionnement automatique. J'espère que cela fonctionnera pour vous
la source
Plutôt que d'utiliser un ensemble de conditions, vous pouvez redimensionner automatiquement votre vue en utilisant la taille de l'écran.
Dans mon cas, je veux une vue qui remplisse l'espace entre certains champs de saisie en haut et certains boutons en bas, donc coin supérieur gauche fixe et variable en bas à droite en fonction de la taille de l'écran. Mon application remplit la vue d'image avec la photo prise par l'appareil photo, donc je veux tout l'espace que je peux obtenir.
la source
Si vous devez convertir une application déjà existante en universelle, vous devez sélectionner le fichier xib correspondant-> afficher les utilitaires-> Afficher l'inspecteur de taille.
Dans l'inspecteur de taille, vous pouvez voir le redimensionnement automatique, en utilisant cet outil, vous pouvez convertir en application iOS existante.
la source
À l'aide de xCode 5, sélectionnez «Migrer vers le catalogue d'actifs» dans Projet> Général.
Ensuite, utilisez "Afficher dans le Finder" pour trouver votre image de lancement, vous pouvez la modifier fictivement en 640x1136, puis la faire glisser dans le catalogue d'actifs comme indiqué dans l'image ci-dessous.
Assurez-vous que la section iOS7 et iOS6 R4 a une image de 640x1136. La prochaine fois que vous lancerez l'application, les barres noires disparaîtront et votre application utilisera un écran de 4 pouces
la source
Remarque: dans le nouveau Xcode, vous devez ajouter ce fichier image [email protected] aux ressources
la source
Utilisez le
Auto Layout
fonction pour les vues. Il s'adaptera automatiquement à toutes les résolutions.Créez deux xibs pour un contrôleur ayant un nom de contrôleur avec le suffixe ~ iphone ou ~ ipad. Au moment de la compilation, Xcode prendra le bon xib en fonction de l'appareil.
Utilisez des classes de taille, si vous souhaitez créer un seul xib pour iPhone et iPad, si la vue est suffisamment simple pour être portée sur iPhone et iPad.
la source
Il y a un léger problème lors des tests sur les appareils iOS et iOS Simulator. Il semble que le simulateur (XCode 6.0.1) donne des valeurs commutées pour la largeur et la hauteur dans
[[UIScreen mainScreen] bounds].size
fonction de l'orientation de l'appareil.Cela peut donc être un problème lors de la détermination de la bonne taille d'écran physique. Ce code permet également de distinguer tous les 2014. Générations de modèles d'iPhone:
Il peut également être facilement modifié pour faire la distinction, par exemple, entre iPhone6 et iPhone6 +.
la source
Je suggérerais d'utiliser le masque de redimensionnement automatique dans vos applications en fonction de votre interface utilisateur, cela permet d'économiser beaucoup de problèmes et est mieux que de créer une interface utilisateur différente pour les écrans iPhone 4 et 5.
la source