12

に設定された親を表示UIViewControllerすると、がスライドインしません。トランジションは使用されません。modalPresentationStyleUINavigationControllerUIModalPresentationCurrentContextUIViewController

これが私のコードです:

UIViewController *viewController = [[UIViewController alloc] init];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
navController.navigationBarHidden = YES;

self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;

[self presentViewController:navController animated:YES completion:nil];

を設定しないとmodalPresenttionStyle、すべて正常に動作します。UIViewControllerしかし、プレゼントをオーバーレイとして表示したいので、このスタイルが必要です。

ところで: が閉じViewControllerられると、アニメーションは正常に動作します。

4

5 に答える 5

1

オーバーレイを追加する場合、最初に行う必要があるのは、iOS 7 の新しい ViewController 遷移 API を使用していることを確認することです。簡単なチュートリアルObjc.io View Controller Transitionsを参照してください。

完了すると、UIViewControllerTransitioningDelegate プロトコルに準拠するアニメーターとビューコントローラーが必要になります。

次に、コントローラーを表示する場合は、モーダル表示スタイルを CurrentContext ではなく UIModalPresentationStyleCustom に設定する必要があります。当然のことながら、アニメーターは提示されたコントローラーのフレームを構成して、その下のコンテンツを引き続き表示できるようにする必要があります。

ここに役立つかもしれない別のチュートリアルがあります -カスタムプレゼンテーション

最後になりましたが、どの向きでもプレゼンテーションのシナリオを処理する必要があります。そうしないと、トランジションのコンテナーが縦向きのままになるため、回転時に奇妙な動作が見られます。ここで私の答えを参照してください-任意の方向への移行

于 2014-08-06T20:53:40.143 に答える
1

これが役立つかどうか教えてください。アニメーションを開始するために、現在のビュー コントローラーは閉じられます。

UIViewController *viewController = [[UIViewController alloc] init];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
navController.navigationBarHidden = YES;

self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;

[self dismissViewControllerAnimated:YES completion:^{
  [self presentViewController:navController animated:YES completion:nil];
}];
于 2015-05-26T01:36:56.997 に答える
1
UIViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
navController.navigationBarHidden = YES;

navController.modalPresentationStyle = UIModalPresentationCurrentContext;

[self presentViewController:navController animated:YES completion:nil];

ストーリーボード識別子でviewControllerを開始すると、役立つ場合があります

于 2015-03-24T07:48:29.143 に答える