我正在尝试用动画替换窗口rootViewController,它只能部分工作。
我以编程方式创建了一个UINavigationController -
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"InboxStoryboard" bundle:nil];
UIViewController *innerViewController = [storyBoard instantiateViewControllerWithIdentifier:@"centerView"];
UINavigationController *centerView = [[UINavigationController alloc] initWithRootViewController:innerViewController];
然后我替换包含在动画块中的窗口根视图控制器 -
[UIView transitionWithView:self.viewController.view.window
duration:0.5
options: UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
self.viewController.view.window.rootViewController = centerView;
}
completion:nil];
发生的事情是动画发生但我创建的控制器只是部分可见,请看下面的图片 -
因此,您可以在旋转期间看到视图仅部分呈现。
之前有人遇到过这种行为吗?
答案 0 :(得分:16)
所以在长搜索后我发现问题出在[UIView transitionWithView:...]
在stackoverflow中搜索了一下,我找到了Swapping rootViewController with animation
使用[UIView transitionFromView:..]
效果很好。
新代码 -
[UIView transitionFromView:self.window.rootViewController.view
toView:self.centerViewController.view
duration:0.5
options:UIViewAnimationOptionTransitionCurlUp
completion:^(BOOL finished)
{
self.window.rootViewController = self.centerViewController;
}];
答案 1 :(得分:0)
您使用的是自动布局吗?如果是这样,请尝试禁用它。我遇到了自动布局和动画的多个问题。