在尝试使用Apple的UIViewController包含时,我遇到了动画两个UIViewControllers之间转换的问题。
这是设置...我创建了一个UITabBarController,在其中一个选项卡中我创建了一个UIViewController作为容器。这个ViewController管理UIViewController和UINavigationController之间的转换。之前的观点是:
点击“下一步”按钮后,视图将以flipFromRight过渡开始转换。在过渡期间,导航栏处于“到”视图中,但位于距视图顶部边缘20个像素的位置。图片如下:
绿色是容器视图的背景颜色。新视图完成转换后,导航栏将快速捕捉到视图的顶部,最终结果为:
捕捉到位的时间与动画的持续时间无关。我达到了我想要的最终状态,但过渡是一个问题。
我已经检测了viewController生命周期,导航栏和UITableView的框架在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”视图控制器中没有代码可以更改视图控制器的外观。
另一部分信息......当我在模拟器中“切换In-Call状态栏”时,导航栏顶部的间隙是In-Call状态栏的高度。
我查看了网络上的所有内容,没有任何帮助。有没有人看过这个并且有人修理过它?
答案 0 :(得分:5)
我确实找到了答案!!子类UINavigationController并覆盖
- (BOOL)wantsFullScreenLayout{
return NO;
}
显然,UINavigationController和UITabController总是想要全屏(默认为YES) - 调整状态栏 - 你不能以任何其他方式设置这个属性。它一直在为我工作。