Question

J'ai 2 et 2 contrôleurs GUIs 1 est appelé landscapeguicontroller et le second est appelé highguicontroller.

Maintenant, j'appelle généralement le highguicontroller, et quand je tourne mon iphone il détecte et il montre le landscapeguicontroller: Code:

    landscapeguicontroller *neu =[[landscapeguicontroller alloc] initWithNibName:nil bundle:nil];
    [self presentModalViewController:neu animated:YES];     
    [self dismissModalViewControllerAnimated:YES];

Le problème est que alors l'animation pousse la nouvelle fenêtre du côté au-delà de l'iPhone vers le haut dans la fenêtre.

Dans le Landscapeguicontroller, j'ai ajouté aux lignes suivantes:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

quand je veux revenir à la highguicontroller j'appelle:

[self dismissModalViewControllerAnimated:YES];

que tous les travaux, mais juste dans la deuxième animation que je vois la bonne « animation de rotation ». Avez-vous des suggestions?

une brève description du problème: en 1. animation du haut vers le paysage, le paysage est poussé dans la fenêtre Mais dans le 2. animation du paysage à haute, la rotation ressemble à une rotation réelle ...

Je veux le look 1.L'animation comme le 2. animation

Cordialement Ploetzeneder

Était-ce utile?

La solution

«Le problème est que alors l'animation pousse la nouvelle fenêtre du côté au-delà de l'iPhone vers le haut dans la fenêtre »

Pour éviter, essayez de définir la propriété modalTransitionStyle du contrôleur de vue d'un des éléments suivants, tout ce que vous préférez: typedef enum {    UIModalTransitionStyleCoverVertical = 0,    UIModalTransitionStyleFlipHorizontal,    UIModalTransitionStyleCrossDissolve, } UIModalTransitionStyle;

En outre, si vous voulez éviter la rotation animée, vous pouvez configurer votre shouldRotate ... méthode pour interdire aux autres orientations, mais mis en place pour recevoir des notifications lorsque l'appareil change physiquement orientations et présenter votre viewcontroller modal lorsque la orientation appropriée pour elle. Voir le code exemple « AlternateViews » d'Apple pour un exemple.

Les notifications reflètent l'orientation physique de l'appareil, et vous pouvez les recevoir si l'interface peut changer ou non. (Vous pouvez regarder la propriété statusBarOrientation des UIApplications pour voir quelle orientation l'interface utilisateur est).

Autres conseils

On dirait que vous voulez que la séquence à se présenter comme suit:

  1. Physiquement faire pivoter l'appareil du mode portrait au paysage
  2. Animer la vue portrait (highguicontroller) au paysage
  3. Appuyez sur la vue paysage (landscapeguicontroller) à partir du nouveau « bas » de l'écran

Si c'est vrai, vous aurez besoin d'avoir quelque chose comme ce qui suit dans l'implémentation de highguicontroller:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
  return interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown;
}

Cela va prendre soin de l'étape 2 (il tournera la vue portrait au mode paysage dans les deux sens).

Ensuite, vous voulez quelque chose comme ceci:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
  if(fromInterfaceOrientation == UIInterfaceOrientationPortrait) {
    [self presentModalViewController:landscapeguicontroller animated:YES];
  }
  else {
    [self dismissModalViewControllerAnimated:YES];
  }
}

Cela devrait présenter le point de vue du paysage après l'animation de rotation est terminée puis écartons après que le dispositif est mis en rotation retour au portrait.

L'espoir qui aide!

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