7

我正在尝试用动画替换窗口 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];

发生的情况是动画发生了,但我创建的控制器仅部分可见,请看下图 -

因此,正如您在旋转过程中看到的那样,视图仅被部分渲染。

以前有人遇到过这种行为吗?

4

2 回答 2

16

因此,经过长时间的搜索,我发现问题出在[UIView transitionWithView:...] Searching a bit more in 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;
                }];
于 2012-12-20T09:37:04.847 回答
0

您是否使用自动布局?如果是这样,请尝试禁用它。我在自动布局和动画方面遇到了多个问题。

于 2012-11-30T00:38:23.513 回答