7
votes

iPad 3 rétina affichage, @ 2x images et applications déjà dans le magasin

Donc, un iPad à l'avenir va probablement avoir une affichage de la rétine. Et Apple va probablement Stick sur le paradigme @ 2x . Je m'y attendais depuis un moment et j'ai déjà @ 2x oeuvres d'art pour iPad dans mes applications; Certains sont déjà dans l'App Store.

Ma question est la suivante: devrais-je recompiler et / ou resoumettre des applications à utiliser ladite oeuvre lorsque cet iPad mythique est publié pour qu'il profite de ces fichiers? Ou est-ce quelque chose que quelque chose est cuit dans le système d'exploitation lui-même et il devrait juste les utiliser automatiquement?

(puisque la même chose s'est produite auparavant, ce qui s'est passé avec des applications publiées sous les SDK avant iPhone-4 ayant la bonne oeuvre d'art? Est-ce qu'ils travaillaient juste?)


2 commentaires

Je ne pense pas que les applications pré-iphone-4 viennent d'avoir la bonne oeuvre d'art ....


Bien sûr, quelqu'un peut-il savoir à coup sûr si cela est correct?


3 Réponses :


1
votes

Je suppose que cela fonctionnera simplement sur l'appareil. Je crois comprendre que [UIIMAGE Imagenamed:] recherche le @ 2x si l'appareil le supporte. Donc, il semble intégré à iOS. Ceci est purement juste une supposition.


0 commentaires

6
votes

J'ai expérimenté une rétine iPad aujourd'hui, et voici ce qui semble arriver:

  • Si une application est compilée avec un Xcode raisonnablement récent (probablement 4.2+), les images @ 2x sont utilisées, comme lorsque l'iPhone 4 est sorti.
  • Si une application a été compilée avec Xcode 3, @ 2x images sont pas utilisés, même si elles sont présentes. (E.G. Dans une application hybride iPhone-4-Capable.)

    (Nous avons un certain nombre de projets basés sur Xcode-3, dont beaucoup sont hybrides pour l'iPhone de la rétine. Aucun d'entre eux n'a utilisé les graphiques @ 2x sur le nouvel iPad. Lorsque j'ai compilé un projet de test en Xcode 3 et Xcode 4, les 4 bâtiments utilisaient la ressource de la rétine et les 3 builds ne l'ont pas fait. D'autres expériences ont montré que la différence est compilée dans l'exécutable lui-même, ce n'est donc pas simplement une info.Plist Tweak comme j'espérais.)

    [ETA Des différences étranges de comportement comme je mettent à jour notre code semblent supporter cela. Si quelqu'un connaît l'incantation de savoir avec certitude, veuillez commenter.]

    [Édité pour ajouter, encore une fois: il y a aussi une différence de nib. Un ancien projet ouvert dans Xcode 4 n'utiliserait pas les graphiques @ 2x tant que je n'ai ré-enregistré mon Watchowow.nib; Ensuite, cela a fait partout, sans autre changement. Je soupçonne une propriété cachée de l'objet UIWindow.]


2 commentaires

Pas que c'est une bonne nouvelle, mais j'ai la même expérience, au moins la partie des images @ 2x non utilisées lors de la compilation avec XCode3. Je n'ai pas encore essayé xcode 4. Merci d'avoir posté, au moins je sais que je ne suis pas fou.


Wow, c'est une réponse détaillée. Merci!



2
votes

Ce que j'ai trouvé lors de la construction de Xcode 4.2 (iOS SDK 5.0) en cours d'exécution sur Snow Leopard est le suivant:

images chargées de manière programmatique à l'aide de [UIIMAGE Imagefin:] Dans votre code chargera correctement les images Retina @ 2x sur le rétine ipad. p>

images spécifiées sur des boutons et des vues dans les fichiers d'interface Builder XIB ne chargez généralement pas correctement les images de la rétine @ 2x. P>

La solution que j'ai découverte était de forcer l'uImage à cacher chacun Parmi les images référencées dans votre XIB à l'aide de [UIIMAGE Imagefindamed:] appelle à votre contrôleur d'affichage (ou approprié) initwithnibname: (nstring *) Bundle: (nsbundle *). La méthode programmatique fait une bonne charge @ 2x et le système le cache le système de chargement XIB finit par référencer, produisant des images de rétine. Par exemple: P>

// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Doing this to precache proper retina versions, because older xcode nibs aren't loading them correctly on retina iPads with XCode 4.2 builds

        [UIImage imageNamed:@"my_button.png"];
        [UIImage imageNamed:@"my_other_button.png"];
    }
    return self;
}


1 commentaires

Merci! J'ai vécu ce qui suit: Si vous ne spécifiez pas le nom de l'image comme celui-ci "myImage@2x.png", et xcode recherche le fichier @ 2x lui-même, il trouvera le fichier, mais il ne l'affichera pas correctement. Il ne sera pas dimensionné comme prévu. Toutefois, si vous chargez votre image comme celle-ci "myImage@2x.png", il est affiché correctement. Je devrais déposer un rapport de bogue, mais je suis actuellement trop épuisé après toutes ces expériences.