0

タブの 1 つにボタンがある 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;
                    }
                }];

私はここから得ました。ただし、問題は、アニメーション化した後、画面の上部にステータス バーと同じ高さのギャップがあるように見えることです。誰がこれを引き起こしているのか知っていますか? このギャップは、アニメーションが終了するとすぐに閉じます (これは私たちが行うときです)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
4

2 に答える 2

0

タブ バー コントローラの領域は、ステータス バーの下の領域もカバーします。したがって、独自のクライアント ビューの origin.y は 20 です。

したがって、トランジションを呼び出す前に、受信ビュー フレームを正しく設定する必要があります。

于 2011-06-20T05:37:09.627 に答える
0

私はそれを行うための非常にハックな方法を見つけました:

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

なぜ私がこれをしなければならなかったのか、そしてこれを行うためのよりエレガントな方法を説明できる人なら誰でも、答えを受け入れるでしょう.

于 2011-06-20T07:15:48.050 に答える