Подтвердить что ты не робот

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 --- Представление в ландшафтном режиме и отключение в портретном режиме не работает должным образом (дополнительная анимация перед отображением правильного представления)

4b9b3361

Ответ 1

Уровень UIWindow имеет странные свойства вращения, и любые выполняемые вами анимации не гарантируют правильное определение ориентации (и меняются в разных версиях iOS). Самый простой способ сделать то, что вы пытаетесь сделать, - это создать пользовательскую презентационную анимацию. Это хорошая запись о том, как это сделать.