45 votes

Comment faire xib compatible avec les iphone 5 et iphone 4 appareils

Je suis en train de la mise en page de mon xib, de sorte que la mise en page s'adapte à la fois l'iphone 5 (4 pouces retina) et 3,5 appareils.

Parce que j'ai pour soutenir IOS 5 je ne peux pas utiliser la mise en page automatique. J'ai utiliser les ressorts et les jambes de force.

J'ai tout essayé dans interface builder. Mais mon point de vue est d'aller au-delà de la partie inférieure de l'iphone de 3,5 pouces ou de ne pas remplir complètement l'iphone-4-pouces de la rétine.

Quelqu'un peut donner un indice comment faire un xib compatible pour les deux dispositifs?

Pour plus de clarté, je suis l'ajout de captures d'écran:

Lorsque j'ai mis la taille 3.5 dans l'attribut de l'inspecteur: When I set size in attribute inspector to 3.5

il ressemble à l'iphone 5. Il y a un espace en dessous des boutons: And this is how it looks in simulator for 3.5 inch device

Si j'ai mis la taille de 4 pouces dans interface builder. Vous pouvez voir que les boutons du bas ne sont pas visibles dans iphone-4. If I set size 3.5 inch in interface builder

Si vous vous demandez quels sont les réglages que j'utilise. Ici, ils sont:

enter image description hereenter image description hereenter image description here

38voto

Waseem Shah Points 806
  1. Vous ajouter une nouvelle catégorie pour UIviewController et ajouter ce code dans .h fichier

     - (id)initWithNibNameforIphone4:(NSString *)nibNameOrNil4 NibNameforIphone5:(NSString *)nibNameOrNil5 NibNameforIpad:(NSString *)nibNameOrNilpad bundle:(NSBundle *)nibBundleOrNil;
    
  2. Ajouter ce code dans votre .m fichier

     - (id)initWithNibNameforIphone4:(NSString *)nibNameOrNil4 NibNameforIphone5:(NSString *)nibNameOrNil5 NibNameforIpad:(NSString *)nibNameOrNilpad bundle:(NSBundle *)nibBundleOrNil
     {
       if (self = [super init])
     {
      self = [self initWithNibName:[self CheckDeviceIphone4:nibNameOrNil4 Iphone5:nibNameOrNil5 Ipad:nibNameOrNilpad] bundle:nibBundleOrNil];
      }
      return self;
    
    }
    
      -(NSString *)CheckDeviceIphone4:(NSString *)iphone4 Iphone5:(NSString *)iphone5 Ipad:(NSString *)ipad {
    
        return ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) ? ipad :([[UIScreen mainScreen] bounds].size.height == 568) ?  iphone5 :iphone4;
      }
    
  3. Ouvrir YouProject-Préfixe.pch fichier et importer votre catégorie ici

  4. maintenant, vous venez de l'utiliser dans tous les plus de ce genre de projets

     self.firstView=[[firstView alloc]initWithNibNameforIphone4:@"firstView4" NibNameforIphone5:@"firstView" NibNameforIpad:@"firstViewIpad" bundle:[NSBundle mainBundle]];
    

    merci, et toute question de le commenter et n'oubliez pas d'upvote :-)

20voto

ivanzoid Points 2627

Essayez d'ajouter ce message à tous vos contrôleurs qui ont besoin de l'appui de l'iPhone 5:

- (void) loadView
{
    [super loadView];
    self.view.frame = [UIScreen mainScreen].bounds;
}

11voto

Navnath Points 1821

Juste vue d'ensemble de la taille d'Aucune aide de l'Interface builder
Il va prendre la taille au moment de l'exécution, vous devez simplement prendre soin de l'origine et de redimensionnement automatique pour chaque élément(UILabel, UIImage, etc.) dans la vue.

  • Interface builder(XIB) -> l'Attribut Inspecteur -> Simulé Métriques de Taille: Aucun

enter image description here

6voto

Diarrhio Points 31

J'ai eu du mal avec cela aujourd'hui, et peu importe ce que j'ai fait, de mon point de vue étaient toujours en montrant que 320x480, même lors de l'exécution sur le retina 4" simulateur. Même [UIScreen écran principal].limites de retourner en 320x480!

J'ai trouvé que l'ajout de la Default-568h@2x.png image de lancement a été la clé pour obtenir iOS de reconnaître mon application comme "retina 4" prêt". Une fois que je l'ai fait, j'ai trouvé avait rien à faire d'autre pour obtenir des plumes automatiquement la taille sans les barres noires. Pas besoin d'avoir deux xibs, modifiez les paramètres dans Interface Builder, remplaçant loadView, etc.

3voto

MaheshShanbhag Points 121

Vous n'avez pas besoin d'utiliser un autre la plume de 3,5 pouces et 4 pouces appareils. La conception de l'application pour les 4 pouces de l'appareil et réglez le AutoResizingMask correctement et cela devrait fonctionner correctement.

Dans votre cas, il suffit de régler le AutoResizingMask à

[view setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth];

La d'un redimensionnement automatique de masque endroits les afficher correctement à sa position dans les deux dispositifs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X