3

在尝试使用 Apple 的 UIViewController 容器时,我遇到了在两个 UIViewController 之间设置动画过渡的问题。

这是设置...我创建了一个 UITabBarController 并在其中一个选项卡中创建了一个 UIViewController 作为容器。这个 ViewController 管理 UIViewController 和 UINavigationController 之间的转换。之前的观点是:

VC 1 的显示

当点击 Next 按钮时,视图开始它的转换,并带有一个 FlipFromRight 转换。在过渡期间,导航栏处于“到”视图中,但位于视图顶部边缘向下 20 像素处。下图:

在此处输入图像描述

绿色是容器视图的背景色。新视图完成转换后,导航栏会吸附到视图顶部,最终结果是:

最终状态

捕捉到位的时间与动画的持续时间无关。我达到了我想要的最终状态,但过渡是一个问题。

我已经检测了 viewController 生命周期,并且导航栏和 UITableView 的框架与 XIB 中指定的一样。xib 看起来像这样:

视图的xib配置

这是代码:

在 -viewDidLoad -

_fromVC = [[FromVC alloc] initWithNibName:@"FromVC" bundle:nil delegate:self];

[self addChildViewController:_fromVC];
[self.view addSubview:_fromVC.view];
[_fromVC didMoveToParentViewController:self];

在我的按钮处理程序中 -

- (void)buttonSelected

{

//
//  Create the "to" View controller
//
ToVC *toVC = [[ToVC alloc] initWithNibName:@"ToVC" bundle:nil];

//
//  Create the navigation controller for the study activity
//
_toNavCon = [[UINavigationController alloc] initWithRootViewController:toVC];

[self addChildViewController:_toNavCon];
[_fromVC willMoveToParentViewController:nil];

[self transitionFromViewController:_fromVC
                  toViewController:_toNavCon
                          duration:0.7
                           options:UIViewAnimationOptionTransitionFlipFromRight
                        animations:nil
                        completion:^(BOOL finished) {
                            [_fromVC removeFromParentViewController];
                            [_toNavCon didMoveToParentViewController:self];
                        }];

}

“to”视图控制器中没有代码可以更改视图控制器的外观。

另一点信息......当我在模拟器中“切换通话状态栏”时,导航栏顶部的间隙是通话状态栏的高度。

我已经查看了网络上的所有内容,但没有任何帮助。有没有人看到这个并且有没有人修复它?

4

1 回答 1

5

我找到答案了!!子类 UINavigationController 并覆盖

- (BOOL)wantsFullScreenLayout{

  return NO;

}

显然, UINavigationController 和 UITabController 总是想要全屏(默认是)-调整状态栏-您不能以任何其他方式设置此属性。它一直在为我工作。

于 2013-04-10T05:29:09.953 回答