我正在通过按下一个按钮来更改 Root View Controller ,该按钮连接到我想要更改到的 View Controller 的自定义 segue。自定义转场看起来像:
- (void)perform{
UIViewController *source = (UIViewController *)self.sourceViewController;
source.view.window.rootViewController = self.destinationViewController;
}
但这只是立即改变了 Root View Controller 。我希望 Controller 在旧 Controller 之上淡出。
最佳答案
常见的做法是:
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"YourSBName" bundle:nil];
UIViewController *vc = [sb instantiateInitialViewController];// Or any VC with Id
DictateITAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.window.rootViewController = vc; // PLEASE READ NOTE ABOUT THIS LINE
[UIView transitionWithView:appDelegate.window
duration:INTERVAL_DURATION
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{ appDelegate.window.rootViewController = vc; }
completion:nil];
现在有几点说明:
appDelegate.window.rootViewController = vc; // PLEASE READ NOTE ABOUT THIS LINE
您实例化的新 View Controller 将以默认方向显示,即纵向。因此,如果您在横向模式下这样做,您的新 View Controller 可能会显示为纵向,然后变为横向。这一行为我解决了这个问题。
关于iOS - 使用动画更改 Root View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23357742/