Domanda

ho avuto 2 Gui e 2 Controller 1 è chiamato landscapeguicontroller e il secondo è chiamato highguicontroller.

Ora chiamo il highguicontroller, e quando ho ruotare il mio iphone che rileva e mostra la landscapeguicontroller:Codice:

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

Il Problema è che poi l'animazione spinge nuova finestra dal di là del lato di iphone fino alla finestra.

Nel Landscapeguicontroller,ho aggiunto le seguenti righe:

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

quando voglio tornare al highguicontroller ho chiamata:

[self dismissModalViewControllerAnimated:YES];

tutte le opere , ma solo in seconda animazione vedo la corretta rotazione di animazione".Hai suggerimenti?

Quindi, una breve descrizione del Problema:1.animazione dall'alto verso il paesaggio, il paesaggio è spinto nella finestra MA nel 2.animazione dal paesaggio di alta, la rotazione sembra una vera e propria rotazione...

voglio la 1.animazione guardare come il 2.animazione

i migliori saluti Ploetzeneder

È stato utile?

Soluzione

"Il problema è che poi l'animazione spinge la nuova finestra dal lato di là di iPhone fino alla finestra"

Per evitare, provare a impostare proprietà modalTransitionStyle del controller vista uno dei seguenti, quello che preferite: enum typedef {    UIModalTransitionStyleCoverVertical = 0,    UIModalTransitionStyleFlipHorizontal,    UIModalTransitionStyleCrossDissolve, } UIModalTransitionStyle;

Inoltre, se si vuole evitare la rotazione animata, è possibile impostare il metodo di shouldRotate ... per non consentire altri orientamenti, ma poi impostare per ricevere notifiche quando il dispositivo cambia fisicamente orientamenti, e presentare il vostro viewcontroller modale quando nella orientamento appropriato per esso. Vedere il codice di esempio di Apple "AlternateViews" per un esempio di questo.

Le notifiche riflettono l'orientamento fisico del dispositivo, ed è possibile riceverli se l'interfaccia è consentito cambiare o meno. (Potete guardare proprietà statusBarOrientation di The UIApplications per vedere che cosa l'orientamento l'interfaccia utente è in).

Altri suggerimenti

Suona come si desidera che la sequenza di andare come questo:

  1. Fisicamente ruotare il dispositivo in orizzontale o verticale
  2. Animare la visualizzazione verticale (highguicontroller) per paesaggio
  3. Spingere la vista del paesaggio (landscapeguicontroller sul nuovo "fondo" di schermo

Se è corretto, avrete bisogno di avere un qualcosa di simile al seguente nel tuo highguicontroller attuazione:

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

Questo si prenderà cura di fase 2 (ruota di visualizzazione verticale a orizzontale in entrambe le direzioni).

Poi si vorrà qualcosa di simile a questo:

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

Che dovrebbe presentare il paesaggio dopo la rotazione di animazione è completa e poi chiuderla dopo che il dispositivo viene ruotato indietro alla verticale.

Speranza che aiuta!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top