Kontekst: Próbuję wykonać niestandardową animację od zwykłego UIViewController.view
do UISplitViewController.view
. Animacja powinna pokazywać się od lewej do prawej.iOS: animacja niepoprawnej orientacji w rootViewController?
Ustawiłem self.window.rootViewController = viewController
gdzie viewController
jest normalnym UIViewController
.
Po bezstykowa użytkownika dodaje pobiera nazywane:
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"];
Gdy urządzenie jest w trybie portretowym, wszystko poszło idealnie. Jednak gdy urządzenie znajduje się w trybie poziomym, animacja przejścia działa tak, jakby urządzenie nadal znajdowało się w trybie portretu. Na przykład: Zamiast wchodzić z lewej strony, przychodzi od dołu. Orientacja obu widoków jest całkowicie poprawna. Tylko przejście jest dziwne.
Po obróceniu do góry w innym kierunku, czy animacja wystąpić z góry? A może od dołu, niezależnie od tego, w którą stronę przejdziesz w tryb krajobrazu? Stała przenosi animację z lewej strony warstwy. Zastanawiam się, czy ramka warstwy nie jest aktualizowana, więc po jej obróceniu znajdowała się teraz strona dolna warstwy. – jmstone617
To prawda. Animacja ignoruje wszelkie zmiany orientacji. Wszelkie sugestie, jak upewnić się, że warstwa zostanie zaktualizowana? – Byte
Mam ten sam problem - orientacja CALayera po prostu nie pasuje do jego widoku. Wydaje się, że jest kilka innych podobnych postów na ten temat, ale żadne z rozwiązań nie działa dla mnie. Obracanie warstwy o 90 stopni oczywiście obraca widok, więc to nie pomaga .. – jonydep