Lors de la création d'un fichier UIImage à partir d'un fichier .png à afficher sur un bouton, un arrière-plan de vue/cell, etc. pour une application iPhone standard, est-il nécessaire que toutes les dimensions soient des puissances de 2 pour des raisons d'optimisation ?
Réponses
Trop de publicités?Comme d'autres l'ont dit, non - mais vous devriez généralement utiliser des images avec des dimensions pairs. Cela est dû au fait que lorsque les vues sont positionnées avec la propriété center
, elles positionneront une image avec une dimension impaire à une certaine position de demi-pixel. Cela entraînera une apparence floue de l'image.
Si vous en avez conscience, cela ne devrait pas vraiment vous poser de problèmes, mais il est tout de même conseillé d'utiliser des tailles paires pour éviter tout souci.
(Cela s'applique à UIKit, pas nécessairement à OpenGL)
Apple utilise des dimensions impaires et arbitraires pour toutes les images qu'elle ajoute à l'interface en votre nom, telles que les éléments de la barre d'outils du système. La meilleure optimisation que vous puissiez faire est tout ce qui réduit la composition, ce qui signifie essentiellement définir la propriété opaque des vues et des calques chaque fois que possible.
Si vous avez le choix entre un png transparent qui sera composé sur un arrière-plan statique et un png opaque avec l'arrière-plan déjà inclus, vous avez la possibilité d'optimiser. Lorsque les images doivent être déplacées ou que l'arrière-plan va changer, vous devez composer, sinon choisissez opaque.
Non, cela n'aura que peu ou pas d'avantages, je me débrouille généralement en faisant ma propre optimisation en utilisant l'option "Enregistrer pour le web ou les périphériques" de photoshop.
Veuillez consulter http://iphonedevelopment.blogspot.com/2008/10/iphone-optimized-pngs.html pour une explication détaillée sur la pré-optimisation des pngs pour les iPhones.
Voici un article sur l'optimisation des images pour iPhone -- vous explique essentiellement pourquoi utiliser des fichiers PNG. La taille ne devrait pas importer sauf si vous utilisez OpenGLES.