3

Apple の UIViewController コンテインメントを使用しようとしたときに、2 つの UIViewController 間の遷移をアニメーション化する際に問題が発生しました。

セットアップは次のとおりです... UITabBarController を作成し、タブの 1 つにコンテナーとして UIViewController を作成しました。この ViewController は、UIViewController と UINavigationController の間の遷移を管理します。前のビューは次のとおりです。

VC1の表示

[次へ] ボタンがタップされると、flipFromRight トランジションでビューのトランジションが開始されます。移行中、ナビゲーション バーは "to" ビューにありますが、ビューの上端から 20 ピクセル下に位置しています。下の写真:

ここに画像の説明を入力

緑はコンテナ ビューの背景色です。新しいビューの遷移が完了すると、ナビゲーション バーがビューの上部にスナップし、最終的な結果は次のようになります。

最終状態

所定の位置にスナップする時間は、アニメーションの長さとは無関係です。目的の最終状態に到達しましたが、移行に問題があります。

viewController ライフサイクルをインストルメント化し、ナビゲーション バーと UITableView のフレームは XIB で指定されているとおりです。xib は次のようになります。

ビューの xib 構成

コードは次のとおりです。

-viewDidLoad 内 -

_fromVC = [[FromVC alloc] initWithNibName:@"FromVC" bundle:nil delegate:self];

[self addChildViewController:_fromVC];
[self.view addSubview:_fromVC.view];
[_fromVC didMoveToParentViewController:self];

私のボタンハンドラで -

- (void)buttonSelected

{

//
//  Create the "to" View controller
//
ToVC *toVC = [[ToVC alloc] initWithNibName:@"ToVC" bundle:nil];

//
//  Create the navigation controller for the study activity
//
_toNavCon = [[UINavigationController alloc] initWithRootViewController:toVC];

[self addChildViewController:_toNavCon];
[_fromVC willMoveToParentViewController:nil];

[self transitionFromViewController:_fromVC
                  toViewController:_toNavCon
                          duration:0.7
                           options:UIViewAnimationOptionTransitionFlipFromRight
                        animations:nil
                        completion:^(BOOL finished) {
                            [_fromVC removeFromParentViewController];
                            [_toNavCon didMoveToParentViewController:self];
                        }];

}

View Controllerの外観を変更する「to」View Controllerにはコードがありません。

もう 1 つの情報... シミュレーターで「通話中ステータス バーを切り替える」と、ナビゲーション バーの上部のギャップが通話中ステータス バーの高さになります。

私はウェブ上のすべてを見てきましたが、役立つものは何もありません。誰かがこれを見て、誰かがそれを修正しましたか?

4

1 に答える 1