CATransition работает неправильно при изменении ориентации, прежде чем отклонить навигационный контроллер
Вот мой код, используемый для представления навигационного монитора:
-(IBAction)showFilterView:(id)sender {
FilterViewController *vc=[self.storyboard instantiateViewControllerWithIdentifier:@"FilterViewController"];
UINavigationController *nvc=[[UINavigationController alloc] initWithRootViewController:vc];
CATransition *transition = [CATransition animation];
transition.duration = 0.35;
transition.timingFunction =
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionMoveIn;
transition.subtype = kCATransitionFromLeft;
UIView *containerView = self.view.window;
[containerView.layer addAnimation:transition forKey:nil];
[self.tabBarController presentViewController:nvc animated:NO completion:nil];
}
И вот мой код для отклонения
-(IBAction)back:(id)sender {
CATransition *transition = [CATransition animation];
transition.duration = 0.35;
transition.timingFunction =
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionMoveIn;
transition.subtype = kCATransitionFromRight;
UIView *containerView = self.view.window;
[containerView.layer addAnimation:transition forKey:nil];
[[self.navigationController presentingViewController] dismissViewControllerAnimated:NO completion:nil];
}
Ситуация 1 --- Хорошая работа в ландшафтном режиме
Ситуация 2 --- Хорошая работа в портретном режиме
Ситуация 3 --- Представление в портретном режиме и отключение в ландшафтном режиме не работает должным образом (дополнительная анимация перед отображением правильного представления)
Ситуация 4 --- Представление в ландшафтном режиме и отключение в портретном режиме не работает должным образом (дополнительная анимация перед отображением правильного представления)
Ответы
Ответ 1
Уровень UIWindow имеет странные свойства вращения, и любые выполняемые вами анимации не гарантируют правильное определение ориентации (и меняются в разных версиях iOS). Самый простой способ сделать то, что вы пытаетесь сделать, - это создать пользовательскую презентационную анимацию. Это хорошая запись о том, как это сделать.