iOS – 使用动画更改根视图控制器

前端之家收集整理的这篇文章主要介绍了iOS – 使用动画更改根视图控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在通过按下一个连接到我想要更改为的视图控制器的自定义segue的按钮来更改根视图控制器.自定义segue看起来像:
  1. - (void)perform{
  2. UIViewController *source = (UIViewController *)self.sourceViewController;
  3. source.view.window.rootViewController = self.destinationViewController;
  4. }

但这只会立即更改根视图控制器.我希望控制器在旧控制器之上淡出.

解决方法

常见的方法是:
  1. UIStoryboard *sb = [UIStoryboard storyboardWithName:@"YourSBName" bundle:nil];
  2. UIViewController *vc = [sb instantiateInitialViewController];// Or any VC with Id
  3. DictateITAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
  4. appDelegate.window.rootViewController = vc; // PLEASE READ NOTE ABOUT THIS LINE
  5. [UIView transitionWithView:appDelegate.window
  6. duration:INTERVAL_DURATION
  7. options:UIViewAnimationOptionTransitionCrossDissolve
  8. animations:^{ appDelegate.window.rootViewController = vc; }
  9. completion:nil];

现在有几点说明:

  1. appDelegate.window.rootViewController = vc; // PLEASE READ NOTE ABOUT THIS LINE

您实例化的新视图控制器将以默认方向显示,即纵向.因此,如果您在横向中执行此操作,则新视图控制器将显示为纵向,然后转为横向.这条线为我解决了这个问题.

猜你在找的iOS相关文章