2017-02-13 1 views
0

Je souhaite utiliser la résolution pour implémenter des images pour une application iOS.Comment implémenter des images pour différentes résolutions

iOS a les résolutions suivantes pour les appareils modernes:

iphone 5/SE: 640x1136
iphone 6/7: 750x1334
iphone 6/7 +: 1242x2208
mini ipad/air: 1536x2048
L'application que je suis en train de construire est seulement Landscape, donc je cherche à créer 5 images pour chaque image, pour correspondre aux résolutions nécessaires.

J'ai du mal à implémenter ceci dans xcode en utilisant des jeux d'images. Je peux créer 1 ensemble d'image, et l'ai un 3 emplacements pour l'iphone, et 3 emplacements pour l'ipad. Cependant, cela ne satisfait que 3 des 5 images que je veux créer:

L'iphone 6/7 @ 2x, l'iphone 6/7 + @ 3x, et l'ipad pro à 2x.

Existe-t-il un moyen d'implémenter des emplacements supplémentaires pour l'iphone 5 et les Ipads plus petits?

Je n'ai pas été en mesure de trouver un moyen, donc je suppose que je dois utiliser une deuxième série d'images, ajouter les 2 images manquantes résolutions. Cela exigerait alors de moi dans le code, avoir le viewcontroller, charger différentes images en fonction de la résolution de l'appareil.

Je suis d'accord avec cette exigence supplémentaire. Ma question serait la suivante: est-ce la bonne façon de mettre en œuvre cette stratégie? Comment appliqueriez-vous cela? Et quelles pourraient être de meilleures stratégies?


Notes: Ce que je suis en train d'éviter est de limiter le nombre de contraintes nécessaires pour obtenir les points de vue pour regarder la manière que je veux. J'ai commencé sur une application, et j'utilisais 2 images basées sur le rapport d'aspect, et je pense que c'est génial, mais l'iphone 4 jetait tout. Puis j'ai appris que je ne devrais peut-être pas m'inquiéter de l'iPhone 4 car il est obsolète. Donc, je vais soit développer l'interface utilisateur à partir de zéro en utilisant la méthode 2 images ou essayer cette méthode d'image 5 en utilisant la résolution. Je suis un nouveau développeur donc je vous remercie pour toute assistance, désolé si je suis trop verbeux, j'espère que cela peut aider les autres aussi, et je trouve que verbose est certainement la meilleure façon d'être en apprenant. Merci pour toute information!!!

Répondre

0

Je ne suis pas sûr de ce genre d'images utilisez-vous voulez, mais devinant qui ne sont que des images d'arrière-plan avec dégradé de couleurs ou de plaine, je pense que vous pouvez le faire:

a) Créer un ensemble d'images, y compris la la plus haute résolution, au milieu et celui le plus bas, peut-être quelque chose comme ceci: 1x: 640x1136, 2x: 1242x2208 et 3x: 2048x2732

b) ensuite utiliser cette série d'images en utilisant ce code qui assure que l'image est redimensionnée correctement la vue:

UIGraphicsBeginImageContext(self.theView.frame.size); 
[[UIImage imageNamed:@"backgroundImageSet"] drawInRect:self.view.bounds]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
self.theView = [UIColor colorWithPatternImage:image]; 

Espérons que cela aide!

+0

Quelques petites choses, l'iphone 5/SE est un appareil @ 2x, donc je ne comprends pas pourquoi vous ajouteriez cette résolution à 1x. De plus, les 5 images ne seraient pas limitées à l'image d'arrière-plan. Enfin, je ne pense pas que je l'ai mentionné, mais toutes mes images seront chargées dans le storyboard, et l'image aussi. L'exception où le code est nécessaire est basé sur l'appareil, je pourrais avoir besoin de changer l'image pour correspondre à la résolution de l'iPhone 5/SE et les Ipads plus petits. J'utiliserais les 5 images pour ne pas avoir besoin de les redimensionner en code. Merci pour la réponse. quoi avec tout [] est-ce une chose objective-c? – Discoveringmypath

+0

Je pense que vous devriez expliquer plus clairement et avec plus de cohérence ce que vous voulez faire. Maintenant, je ne suis pas sûr de ce que vous voulez faire, il est invité qu'une image définie avec 1x: 640x1136, 2x: 1242x2208 et 3x: 2048x2732 fonctionnera bien de l'iPhone 5 à l'iPad. D'un autre côté, je ne sais vraiment pas à quoi ressemble votre interface, alors, c'est ce que j'ai dit, si c'est juste "pour le fond". Vous pouvez également gérer cela avec juste des contraintes, il ne devrait pas y avoir beaucoup de contraintes, si c'est le cas. –

+0

Donc, je relis mon message et je ne vois pas de problèmes de cohérence, je pense que je suis assez clair sur ce que je veux. Mon commentaire n'est pas une attaque contre vous. C'est moi qui essaie de comprendre ta réponse. Cela dit, votre recommandation pour un ensemble d'images est clairement erronée. L'iphone 5 ne tirera jamais l'image 1x, donc avoir cette résolution n'a pas de sens. Je vois aussi que vous mettez la résolution de l'ipad pro comme image 3x. Ipad est un 2x, donc il n'utilisera jamais l'image 3x. À moins que je me trompe ici, je ne sais pas comment votre solution répond à ma question. Encore une fois, j'apprécie les commentaires. – Discoveringmypath

1

Bien que vous ne puissiez pas ajouter d'emplacements supplémentaires à .xcassets, vous pouvez implémenter size classes dans vos fichiers .storyboard. C'est une approche simple pour concevoir une interface unique pour chaque appareil. En l'utilisant, vous pouvez concevoir une interface agréable pour l'iPhone 4 (cependant, il est obsolète que vous avez pointé dans OP).

+0

J'ai utilisé des classes de taille pour implémenter différentes contraintes en fonction des catégories de périphériques. Si j'avais les 5 résolutions, il n'y aurait pas besoin de réduire par appareil. Je suppose que j'essaie de voir comment on pourrait mettre en œuvre cette stratégie. – Discoveringmypath