私にとっては、正しい方法(アニメーションのトランジションを表示する)とハッキーな方法(コントローラーをモーダルに提示することで汚れる)の2つのオプションがあります。
まず、ハッキーな方法で、モーダルビューコントローラーを表示できます。ご存知のように、モーダルビューコントローラーが画面を引き継ぎ、表示されている間は唯一のアクセス可能なコントローラーですが、サイズを変更して、の詳細セクションの上に表示されるようにすることができます。画面のみの場合、ここでの問題は、サイズ変更や置き忘れを意図したものではなく、回転が発生したときに問題が発生しやすいことです。UISplitViewController
また、このコントローラーが存在する間は、マスター部分と対話することはできません。
これは、たとえば次のように実行できます。
UIViewController *detail = [[UIViewController alloc] init];
detail.modalPresentationStyle = UIModalPresentationFormSheet;
detail.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
if([self respondsToSelector:@selector(presentViewController:animated:completion:)]){
[self presentViewController:detail animated:YES completion:nil];
}else{
[self presentModalViewController:detail animated:YES];
}
detail.view.superview.frame = CGRectMake(320.0, 0.0, self.view.frame.size.width - 320.0, self.view.frame.size.height);
[detail release];
詳細ビューコントローラビューのスーパービューの中心を調整する必要があるかもしれません...これはお勧めしません。
もう1つの解決策はUIView
、詳細ビューコントローラ内のアニメーションを使用してビューを入れ替え、アニメーション化して反転させることです。
それがどのように見えるかを確認するには、iOS用のFacebookアプリをチェックしてください。会話中にチャットで右上の[...]ボタンをタップすると、ビューのコンテンツが反転し、通知を調整できます。その人/チャットの設定。
たとえば、詳細ビューコントローラのボタンをタップすると、次のことができます。
UIViewController *someOtherController = [...];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.8];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
forView:self.view
cache:YES];
[self.view addSubview:someOtherController.view];
[UIView commitAnimations];
あなたはそれを取り除くために逆をするでしょう。