UINavigationBar在transitionFromViewController期间跳转20像素

时间:2013-02-10 07:23:43

标签: animation uiviewcontroller ios6 uinavigationcontroller

在尝试使用Apple的UIViewController包含时,我遇到了动画两个UIViewControllers之间转换的问题。

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

Display of VC 1

点击“下一步”按钮后,视图将以flipFromRight过渡开始转换。在过渡期间,导航栏处于“到”视图中,但位于距视图顶部边缘20个像素的位置。图片如下:

enter image description here

绿色是容器视图的背景颜色。新视图完成转换后,导航栏将快速捕捉到视图的顶部,最终结果为:

Final state

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

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

xib Configuration of View

以下是代码:

在-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”视图控制器中没有代码可以更改视图控制器的外观。

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

我查看了网络上的所有内容,没有任何帮助。有没有人看过这个并且有人修理过它?

1 个答案:

答案 0 :(得分:5)

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

- (BOOL)wantsFullScreenLayout{

  return NO;

}

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