我在其中一个标签中创建了一个带有导航控制器的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为我翻转。我想我会坚持下滑。'
我该怎么办?理想情况下,我希望标签栏与其余部分一起翻转,但我也很乐意随后将其淡入。
答案 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的引用,然后再将其添加到动画中,或者它也不起作用。
通过这种方式,您可以将其设置为与视图相同或不同的动画。