【问题标题】:Cross disolve the animation of RootViewController change?交叉溶解根视图控制器变化的动画?
【发布时间】:2012-09-23 21:44:20
【问题描述】:

如何更改 UIWindow 中的 RootViewController 并将其交叉溶解到新的根目录?

【问题讨论】:

    标签: objective-c animation view controller root


    【解决方案1】:

    我建议在UIView 上使用transitionFromView 方法。例如,您可以使用以下代码来处理您的转换:

    - (void)transitionToViewController:(UIViewController *)viewController
                        withTransition:(UIViewAnimationOptions)transition
    {
        [UIView transitionFromView:self.window.rootViewController.view
                            toView:viewController.view
                          duration:0.65f
                           options: UIViewAnimationOptionTransitionCrossDissolve
                        completion:^(BOOL finished){
                            self.window.rootViewController = viewController;
                        }];
    }
    

    你可以找到这个方法的参考文档here

    【讨论】:

    【解决方案2】:

    让我们看看我的例子来了解如何切换rootviewcontroller。

     - (void)showTutorialsScreen:(BOOL)animated
    {
       NUDTutorialsViewController *tutorialsVC = [[NUDTutorialsViewController alloc] initWithNibName:NSStringFromClass([NUDTutorialsViewController class]) bundle:nil];
       UINavigationController *tutorialsNavController = [[UINavigationController alloc] initWithRootViewController:tutorialsVC];
    
       [self switchRootViewController:tutorialsNavController animated:animated completion:nil];
    

    }

    - (void)showLoadingScreen:(BOOL)animated
    {
       NUDLoadingViewController *loadingVC =  [[NUDLoadingViewController alloc]   initWithNibName:NSStringFromClass([NUDLoadingViewController class]) bundle:nil];
    
       [self switchRootViewController:loadingVC animated:animated completion:nil];
    

    }

    - (void)showMainScreen:(BOOL)animated
    {
        NUDMainViewController *mainVC = [[NUDMainViewController alloc] initWithNibName:NSStringFromClass([NUDMainViewController class]) bundle:nil];
        UINavigationController *mainNavController = [[UINavigationController alloc] initWithRootViewController:mainVC];
    
        [self switchRootViewController:mainNavController animated:animated completion:nil];
    

    }

     - (void)switchRootViewController:(UIViewController *)aRootViewController animated:(BOOL)animated completion:(void(^)())completion
     {
        if (animated) {
          [UIView transitionWithView:self.window duration:0.3 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
            BOOL oldState = [UIView areAnimationsEnabled];
            [UIView setAnimationsEnabled:NO];
            self.window.rootViewController = aRootViewController;
            [UIView setAnimationsEnabled:oldState];
        } completion:^(BOOL finished) {
            if (completion) completion();
        }];
     }
       else {
           self.window.rootViewController = aRootViewController;
            if (completion) completion();
       }
     }
    

    【讨论】:

      猜你喜欢
      • 2020-02-21
      • 2021-07-23
      • 2019-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多