Question

Je simple UIViewController qui utilise un pour son interface XIB.

En tant que tel, l'interface comprend simplement un UIView, un UIActivityIndicator et un UILabel. Je les contraintes de dimensionnement dans Interface Builder réglé pour garder l'indicateur d'activité et l'étiquette centrée lors de la rotation de la vue.

Le UIViewController est de retour OUI pour les orientations portrait et paysage dans la méthode -shouldAutorotateToInterfaceOrientation:.

La vue est ajoutée à la hiérarchie d'affichage manuellement, en utilisant

if (!activityOverlay)
    activityOverlay = [[XBActivityOverlayViewController alloc] initWithNibName:@"XBActivityOverlayViewController" bundle:nil message:@"Connecting..."];

[activityOverlay.view setAlpha:0.0f];
[self.window addSubview:activityOverlay.view];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3f];
[activityOverlay.view setAlpha:0.9f];
[UIView commitAnimations];

Le problème que je vais avoir est que si le dispositif est déjà en orientation paysage et la vue est ajoutée à la hiérarchie à ce point, la vue est toujours en orientation portrait, et ne tournent pas auto.

Que dois-je faire pour ajouter la vue dans la même orientation que la vue parent?

Était-ce utile?

La solution

Je ne sais pas si elle est la bonne réponse à votre question, mais je l'espère, aider à:

Pour moi, chaque fois que j'ajouter / démettre un modal ou afficher une nouvelle vue, la fonction suivante est appelée:

-(void) detectOrientation 
{


 if (([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft) || 
     ([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight)) 
 {

             item1.frame = CGRectMake(147.0, 241.0, 56.0, 28.0);
     item2.frame = CGRectMake(265.0, 241.0, 56.0, 28.0);

 }
 else if (([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait) ||
          ([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortraitUpsideDown) || !inLandscapeOrientation)
 {

    item1.frame = CGRectMake(35.0, 425.0, 35.0, 28.0);
item2.frame = CGRectMake(176.0, 425.0, 35.0, 28.0);
 }

}

Ici, je change la position selon l'orientation de l'appareil en cours. Peut-être que si vous constatez que l'orientation actuelle est le paysage que vous ajoutez un sous-vue qui a une telle orientation.

Alejandra:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top