我已经实现了一个容器视图控制器(ios5),现在我正在尝试实现自定义动画/转换来切换视图控制器。
但是在实现任何涉及UINavigationController的动画时我遇到了一个问题,结果并不像预期的那样。例如,如果我在使用导航栏显示控制器时从左侧动画执行翻转,导航栏的位置将保持低于原始位置44pxs,并且在执行动画后导航栏将平滑移动到原始位置难看...
我执行的每个动画都会发生这种情况,所以我猜它必须只与navigationcontroller有关。
这是我用于翻转过渡的代码
[self transitionFromViewController:fromViewController
toViewController:toViewController
duration:1.0
options:UIViewAnimationOptionTransitionNone
animations:^{
[UIView beginAnimations:@"animation2" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration: 0.7];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:containerView cache:NO];
[UIView commitAnimations];
}
completion:^(BOOL finished) {
[toViewController didMoveToParentViewController:self];
[fromViewController removeFromParentViewController];
}];
我也试过以下
[self transitionFromViewController:fromViewController
toViewController:toViewController
duration:1.0
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
}
completion:^(BOOL finished) {
[toViewController didMoveToParentViewController:self];
[fromViewController removeFromParentViewController];
}];
答案 0 :(得分:0)
根据iphone或ipad设置导航栏的框架及其在iphone中的纵向方向
[self.navigationController.navigationBar setFrame:CGRectMake(0, 20, 320, 44)]; //for iphone simarly for ipad and its orientation
您需要将导航栏框架从状态栏更改为其实际位置,即加20
答案 1 :(得分:0)
我与NavigationController
和Container controller
有类似的问题。实际上它是窗口底部的工具栏。我的解决方案是首先隐藏工具栏,然后在主过渡完成后显示带有动画的工具栏。它看起来像整个动画的一部分。
以下是我隐藏和显示工具栏的方法:
[toNavController setToolbarHidden:YES];
[self transitionFromViewController:fromViewController
toViewController:toNavController
duration:1.0
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
}
completion:^(BOOL finished) {
[toNavController didMoveToParentViewController:self];
[fromViewController removeFromParentViewController];
[toNavController setToolbarHidden:NO animated:YES];
}];
答案 2 :(得分:0)
在viewDidLoad中将frame.origin.y设置为1.你仍然有一个跳跃但是有一个像素。