在尝试使用 Apple 的 UIViewController 容器时,我遇到了在两个 UIViewController 之间设置动画过渡的问题。
这是设置...我创建了一个 UITabBarController 并在其中一个选项卡中创建了一个 UIViewController 作为容器。这个 ViewController 管理 UIViewController 和 UINavigationController 之间的转换。之前的观点是:
当点击 Next 按钮时,视图开始它的转换,并带有一个 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”视图控制器中没有代码可以更改视图控制器的外观。
另一点信息......当我在模拟器中“切换通话状态栏”时,导航栏顶部的间隙是通话状态栏的高度。
我已经查看了网络上的所有内容,但没有任何帮助。有没有人看到这个并且有没有人修复它?