我有一个tabbarview应用程序,其中一个选项卡中有一个按钮。当按下该按钮时,会发生某些事情,用户将切换到另一个选项卡。
我在那个按钮上制作了一个动画:
UIView * fromView = self.tabBarController.selectedViewController.view;
UIView * toView = [[self.tabBarController.viewControllers objectAtIndex:0] view];
[UIView transitionFromView:fromView
toView:toView
duration:0.6
options:(UIViewAnimationOptionTransitionCurlDown)
completion:^(BOOL finished) {
if (finished) {
self.tabBarController.selectedIndex = 0;
}
}];
我从here得到的。然而问题是,在动画制作之后,我似乎在屏幕顶部有一个与状态栏一样高的间隙。有谁知道是什么导致了这个?动画结束时(即我们self.tabBarController.selectedIndex = 0
顺便说一下,如果我把动画换成别的东西,甚至没有动画,问题仍然存在。
其他信息,这是框架细节:
from frame: x:0.000000, y:0.000000, w:320.000000, h:411.000000
to frame: x:0.000000, y:0.000000, w:320.000000, h:431.000000
答案 0 :(得分:0)
标签栏控制器的区域也覆盖状态栏下方的区域。所以它自己的客户端视图的origin.y为20。
因此,您需要在调用转换之前正确设置传入视图帧。
答案 1 :(得分:0)
我发现了一种非常黑客的方法:
CGRect to = fromView.superview.frame;
to.origin.y -= 20;
fromView.superview.frame = to;
任何可以向我解释为什么我必须这样做以及更优雅的方式来做到这一点的人都会接受答案。