【问题标题】:Replace window.rootViewController with animation works partially用动画部分替换 window.rootViewController
【发布时间】:2012-11-11 15:59:49
【问题描述】:

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

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

正如您在旋转过程中看到的那样,视图只是部分呈现。

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

【问题讨论】:

  • 一个错误?删除模拟器上的应用程序并再次运行。
  • 您发布的代码中的 self 是什么?目前尚不清楚您在哪个类中执行此代码。
  • self 是另一个 UIViewController 拥有的一些 NSObject。流程是 - 在其他一些 UIViewController 中实例化我的对象,使用该对象将根视图控制器替换为另一个。 AFAIK 这是非常标准的流程,仍然不知道为什么它被部分渲染。另外,如果我不使用动画而只是替换根视图,它就可以工作。

标签: iphone objective-c ios xcode uiviewcontroller


【解决方案1】:

所以经过 long 搜索后,我发现问题出在 [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;
                }];

【讨论】:

  • 这段代码真的有效吗?这应该不起作用,因为这会给出编译时警告...您正在将 UIView 分配给 rootViewController 属性...这是错误的...请更正您的答案...
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2020-03-05
    相关资源
    最近更新 更多