Apple の UIViewController コンテインメントを使用しようとしたときに、2 つの UIViewController 間の遷移をアニメーション化する際に問題が発生しました。
セットアップは次のとおりです... UITabBarController を作成し、タブの 1 つにコンテナーとして UIViewController を作成しました。この ViewController は、UIViewController と UINavigationController の間の遷移を管理します。前のビューは次のとおりです。
[次へ] ボタンがタップされると、flipFromRight トランジションでビューのトランジションが開始されます。移行中、ナビゲーション バーは "to" ビューにありますが、ビューの上端から 20 ピクセル下に位置しています。下の写真:
緑はコンテナ ビューの背景色です。新しいビューの遷移が完了すると、ナビゲーション バーがビューの上部にスナップし、最終的な結果は次のようになります。
所定の位置にスナップする時間は、アニメーションの長さとは無関係です。目的の最終状態に到達しましたが、移行に問題があります。
viewController ライフサイクルをインストルメント化し、ナビゲーション バーと UITableView のフレームは 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 つの情報... シミュレーターで「通話中ステータス バーを切り替える」と、ナビゲーション バーの上部のギャップが通話中ステータス バーの高さになります。
私はウェブ上のすべてを見てきましたが、役立つものは何もありません。誰かがこれを見て、誰かがそれを修正しましたか?