UIView在制作动画后有差距

时间:2011-06-20 05:25:19

标签: iphone uitabbar uiviewanimation

我有一个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

时,这个差距会很快关闭)

Sorry I had to hide some details

顺便说一下,如果我把动画换成别的东西,甚至没有动画,问题仍然存在。

其他信息,这是框架细节:

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

2 个答案:

答案 0 :(得分:0)

标签栏控制器的区域也覆盖状态栏下方的区域。所以它自己的客户端视图的origin.y为20。

因此,您需要在调用转换之前正确设置传入视图帧。

答案 1 :(得分:0)

我发现了一种非常黑客的方法:

CGRect to = fromView.superview.frame;
to.origin.y -= 20;
fromView.superview.frame = to;

任何可以向我解释为什么我必须这样做以及更优雅的方式来做到这一点的人都会接受答案。