Animation UINavigationBar在从ViewController转换期间跳跃20像素

Animation UINavigationBar在从ViewController转换期间跳跃20像素,animation,uiviewcontroller,ios6,uinavigationcontroller,Animation,Uiviewcontroller,Ios6,Uinavigationcontroller,在尝试使用苹果的UIViewController包容时,我遇到了一个在两个UIViewController之间设置过渡动画的问题 这里是设置。。。我创建了一个UIAbbarController,并在其中一个选项卡中创建了一个UIViewController作为容器。此ViewController管理UIViewController和UINavigationController之间的转换。前视图为: 点击“下一步”按钮时,视图将以flipFromRight过渡开始过渡。在转换过程中,导航栏处于“

在尝试使用苹果的UIViewController包容时,我遇到了一个在两个UIViewController之间设置过渡动画的问题

这里是设置。。。我创建了一个UIAbbarController,并在其中一个选项卡中创建了一个UIViewController作为容器。此ViewController管理UIViewController和UINavigationController之间的转换。前视图为:

点击“下一步”按钮时,视图将以flipFromRight过渡开始过渡。在转换过程中,导航栏处于“到”视图中,但位于距离视图上边缘20像素的位置。下图:

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

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

我已检测viewController生命周期,导航栏和UITableView的框架如XIB中所指定。xib如下所示:

代码如下:

视图内加载-

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

[self addChildViewController:_fromVC];
[self.view addSubview:_fromVC.view];
[_fromVC didMoveToParentViewController:self];
在我的按钮处理程序中-

- (void)buttonSelected
{

}

“到”视图控制器中没有更改视图控制器外观的代码

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


我浏览了网络上的所有内容,没有任何帮助。有人看到了吗?有人修复了吗?

我确实找到了答案!!子类UINavigationController和override

- (BOOL)wantsFullScreenLayout{

  return NO;

}

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

你并不孤单。我在自定义包容视图控制器上遇到了类似的问题。目前还没有解决方案。有一件事:根据文档,动画参数不能是
nil
NULL
。改为添加空块:
^{}
。这可能无法解决您的问题,但这可能是一个问题。我确实找到了一个解决方案。。。答案是将UINavigationController(以及UITabBarController)子类化,并覆盖-(BOOL)wantsFullScreenLayout以返回NO。它修复了我的问题。我也会回答这个问题。显然,UINavigationController默认为YES,您不能只设置。似乎对我有用。太好了,我也会试试。确保将你的答案标记为已接受的答案。太棒了。请务必将您的答案标记为“答案”。(点击绿色复选标记轮廓)最后!几个月来我一直在努力解决这个问题。我知道在
视图将出现:
视图将布局子视图:
之间的某个位置发生了变化,但我不知道在哪里。老实说,我还是不知道在哪里。谢谢你的解决方案。我只希望它不会破坏其他东西。积极思考。:)
- (BOOL)wantsFullScreenLayout{

  return NO;

}