2013-11-08 3 views
3

У меня есть проект, начинающийся с tableView, однако, когда пользователь нажимает кнопку «Настройка», я хочу анимировать изменение в splitViewController.Анимация изменения rootViewController на SplitViewController?

Я могу легко изменить RootViewController, однако анимация не как рекламируется:

UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"SetupViewController"]; 
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

[UIView transitionWithView:self.navigationController.view 
        duration:0.75 
        options:UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 
        app.window.rootViewController = controller; 

       } 
       completion:nil]; 

Есть ли способ я могу оживить это изменение RootViewController?

ответ

4

Это немного hackie, но попробуйте установить корень до анимации и обратно, так что новый ViewController получает правильный размер при запуске анимации:

UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"SetupViewController"]; 
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

UIViewController *currentController = app.window.rootViewController; 
app.window.rootViewController = controller; 
app.window.rootViewController = currentController; 

[UIView transitionWithView:self.navigationController.view.window 
        duration:0.75 
        options:UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 
        app.window.rootViewController = controller; 

       } 
       completion:nil]; 

Это решение работал для меня.

+0

Несмотря на то, что он избавляется от расширения от средней анимации, теперь он просто мгновенен, как будто я вообще не делал анимации. :(Возможно, нет никакого способа оживить такой переход. –

+0

Хммм, правда в том, что я пробовал это с флип-анимацией – Levi

+0

Является ли ваш контроллер назначения splitViewController? –

Смежные вопросы