如何阻止标签栏破坏我的翻转过渡?

时间:2011-03-31 14:52:03

标签: iphone ios4

我在其中一个标签中创建了一个带有导航控制器的iOS标签栏应用。它在从堆栈中推送或弹出视图时使用翻转动画(我发现了如何执行此操作here)。

除了标签栏的问题外,它看起来很棒。堆栈根目录中的视图显示标签栏,但对于下一个标签栏,我将hidesBottomBarWhenPushed设置为YES。推动效果很好;问题是弹回到根视图控制器。我的视图从左侧翻转,除了滑动的标签栏。

这是弹出视图控制器的代码:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
                       forView:self.navigationController.view
                         cache:NO];
[UIView setAnimationDuration:flipDuration];
[self.navigationController popViewControllerAnimated:NO];
[UIView commitAnimations];

奇怪的是,如果我注释掉除了第四个语句之外的所有语句,标签栏就会表现出来 - 它不会滑入,它会立即显示其余部分。出于某种原因,添加过渡允许标签栏对自己说,'好吧,其他人都是动画的。为什么我不能动画?但没有poncy为我翻转。我想我会坚持下滑。'

我该怎么办?理想情况下,我希望标签栏与其余部分一起翻转,但我也很乐意随后将其淡入。

2 个答案:

答案 0 :(得分:1)

我明白了!看了这个之后,另一个回答了另一个问题,我找到了解决方案。

在要推动转换的控制器中,使用以下代码:

[UIView transitionWithView:[[self navigationController] view]
                  duration:0.3
                   options:UIViewAnimationOptionTransitionFlipFromRight
                animations:^{
                    [[self navigationController] pushViewController:theView animated:NO];
                } completion:NULL];

在您的视图中,您想要转换回来,请使用以下代码:

[UIView transitionWithView:[[self navigationController] view]
                  duration:0.3
                   options:UIViewAnimationOptionTransitionFlipFromLeft
                animations:^{
                    [[self navigationController] popViewControllerAnimated:NO];
                } completion:NULL];

这可以防止与tabBar的混乱。试一试!

答案 1 :(得分:0)

它不仅仅是创建对tabBarObject的引用,然后再将其添加到动画中,或者它也不起作用。

通过这种方式,您可以将其设置为与视图相同或不同的动画。