Obj-C
或者MonoTouch C#
答案很好。
初始 UIWindow 的 RootViewController 是一个简单的登录屏幕。
window.RootViewController = loginScreen;
登录后,我将 Root 设置为主应用程序
window.RootViewController = theAppScreen;
在这种情况下,如何在两个 RootViewController 之间进行淡入淡出转换?
Obj-C
或者MonoTouch C#
答案很好。
初始 UIWindow 的 RootViewController 是一个简单的登录屏幕。
window.RootViewController = loginScreen;
登录后,我将 Root 设置为主应用程序
window.RootViewController = theAppScreen;
在这种情况下,如何在两个 RootViewController 之间进行淡入淡出转换?
我可能会建议一种不同的方法来为您制作动画。只需先转到theAppScreen
控制器,如果您需要用户登录,请让它执行(如果您希望它看起来像直接进入登录屏幕,则不必为此步骤设置动画)。这样,当您成功登录后, loginScreen 就可以将动画返回到 main 。(显然,如果你想要淡入淡出效果,不要忘记将控制器设置为。)presentViewController
loginScreen
dismissViewControllerAnimated
theAppScreen
modalTransitionStyle
UIModalTransitionStyleCrossDissolve
如果你一心想要改变你的rootViewController
,我能想到的唯一方法(我不喜欢它)就是做这样的事情:
MainAppViewController *controller = [[MainAppViewController alloc] initWithNibName:@"MainAppViewController" bundle:nil];
// animate the modal presentation
controller.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self.window.rootViewController presentViewController:controller
animated:YES
completion:^{
// and then get rid of it as a modal
[controller dismissViewControllerAnimated:NO completion:nil];
// and set it as your rootview controller
self.window.rootViewController = controller;
}];
第一种技术对我来说似乎更干净。
这是@Robert Ryan 技术的 MT 代码(尽管我同意他的建议,这theAppScreen
可能是“正确的” RootViewController
):
void DissolveIn (UIWindow window, UIViewController newController)
{
newController.ModalTransitionStyle = UIModalTransitionStyle.CrossDissolve;
window.RootViewController.PresentViewController (newController, true, () =>
{
window.RootViewController.DismissViewController (false, null);
window.RootViewController = newController;
});
}
你可以这样做:
window.RootViewController = theAppScreen;
loginScreen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[theAppScreen presentModalViewController:loginScreen animated:NO];
loginScreen 可以在完成后自行关闭:[self dismissModalViewControllerAnimated:YES];
第一个动画上的 NO 将使 loginScreen 出现,而其下方的 theAppScreen 没有任何可见性。完成时的动画 = YES 将提供交叉溶解。