Contesto: sto tentando di eseguire un'animazione personalizzata da un normale UIViewController.view
a un UISplitViewController.view
. L'animazione dovrebbe mostrare da sinistra a destra.iOS: animazione dell'orientamento errato su rootViewController?
I set self.window.rootViewController = viewController
dove viewController
è un normale UIViewController
.
Una volta che il colpo utente, il seguente viene chiamato:
UIView *theWindow = [viewController.view superview];
[viewController.view removeFromSuperview];
[theWindow addSubview:self.splitViewController.view];
CATransition *animation = [CATransition animation];
[animation setDuration:0.5];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromLeft];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[theWindow layer] addAnimation:animation forKey:@"SwitchToView1"];
Quando il dispositivo è in modalità ritratto, tutto è andato alla perfezione. Tuttavia, quando il dispositivo si trova in modalità orizzontale, l'animazione della transizione viene eseguita come se il dispositivo fosse ancora in modalità verticale. Ad esempio: invece di entrare da sinistra, arriva dal basso. L'orientamento di entrambe le viste è completamente corretto. Solo la transizione è strana.
Se si ruota in orizzontale nella direzione opposta, non l'animazione avviene dall'alto? O è dal basso indipendentemente dal modo in cui si passa in modalità orizzontale? La costante porta l'animazione dal lato sinistro del livello. Mi chiedo se la cornice del livello non viene aggiornata, quindi quale era il lato sinistro del livello è ora in basso dopo la rotazione. – jmstone617
Questo è corretto. L'animazione ignora qualsiasi cambiamento di orientamento. Qualche suggerimento su come assicurarsi che il layer venga aggiornato? – Byte
Ho lo stesso problema: l'orientamento del CALayer non sembra corrispondere alla sua vista. Sembra che ci siano altri post simili a riguardo, ma nessuna delle soluzioni sembra funzionare per me. Ruotando il livello di 90 gradi naturalmente si ruota anche la vista, quindi non aiuta .. – jonydep