Вы не можете использовать CATransition для переключения между двумя контроллерами представления, но вы можете просто использовать представление контроллера представления и переключить его с представлением другого контроллера представления.
iOS 5 упростила переход с UIViewControllers, поскольку в нем появился метод transitionFromViewController:toViewController:duration:options:animations:completion:
.
В конце концов, вы все равно будете использовать UIViews UIViewControllers.
(На самом деле, указанная вами ссылка - это именно то, как вы переходите между двумя UIViewControllers. Помните, что контроллеры представления управляют только представлениями и не являются самими представлениями. Переключение обратно не так просто, как dismissModalViewControllerAnimated: но иногда настройка не выполняется т легко).
Вот пример использования метода iOS 5:
UIViewController * controller = [[UIViewController alloc] initWithNibName: nil bundle: nil];
[controller.view setBackgroundColor: [UIColor greenColor]];
[self addChildViewController:controller];
[self transitionFromViewController:self.redController toViewController:controller duration:0.8 options:0 animations:^{
CATransition *transition = [CATransition animation];
transition.delegate = self;
transition.duration = 0.8;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
NSString *types[4] = {@"cube", @"rippleEffect", @"cube", @"alignedCube"};
NSString *subtypes[4] = {kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromRight};
transition.type = types[0];
transition.subtype = subtypes[1];
[self.view.layer addAnimation:transition forKey:nil];
} completion:^(BOOL finished) {
[controller didMoveToParentViewController:self];
}];
Обратите внимание, вам придется заранее сделать следующее.
[self addChildViewController:self.redController];
[self.view addSubview:self.redController.view];
Есть несколько вещей, которые вы должны сделать перед использованием этих методов. Основное отличие состоит в том, что у вас будет еще один контроллер представления, чем у вас есть. Этот дополнительный UIViewController служит контейнером для двух других (вроде как в настоящее время self.view является контейнером для двух ваших UIViews).