2012-01-26 6 views
4

をソリッドカラーの背景を示すことなく、私はiPadアプリのために、次のUIを持って、別のモーダルビューから反転:はシームレス

modal view dialog http://i42.tinypic.com/2sbr90j.gif

私は設定ボタンをクリックすると、私が欲しいですダイアログを水平に反転させて設定ダイアログを表示します。

これはうまく動作します。しかし、デイログが反転したときに背景色が表示されます。あなたが見ることができるように:

here http://i41.tinypic.com/2gt3u4l.gif

ダイアログが反転するように、色のこのブロックが表示されていない方法はありますか?よりシームレスに見えるようにしたいと思っています。あたかも紙が裏返っているかのように。

ウィンドウ

メインビュー:

ビューは、本質的に、このです。

ウィンドウのrootViewController

を設定してログインモーダルビュー

このようにメインウィンドウとルートコントローラ(アプリデリゲートクラスで)次のように設定されている:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.viewController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil]; 
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

ログインウィンドウが設定され、メインビューのviewDidAppeaに表示されますR

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    // Setup and show Login dialog 
    LoginViewController* controller = [[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil]; 
    controller.delegate = self; 
    controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    controller.modalPresentationStyle = UIModalPresentationFormSheet; 
    [self presentModalViewController:controller animated:YES]; 
} 

そして設定ボタンが押された:

- (IBAction)settingsButtonPressed:(id)sender { 
    SettingsViewController *controller = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil]; 
    controller.delegate = self; 
    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    controller.modalPresentationStyle = UIModalPresentationCurrentContext; 
    [self presentModalViewController:controller animated:YES];  
} 
を:示したが 設定モーダルビューは ログインモーダルビューが示されたことがほとんど同じ方法で行われます

答えて

3

私はmodalPresentationStyleを使ってあなたが望むことをする方法がないと思います。 UIViewAnimationOptionTransitionFlipFromLeftオプションで

+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion 

:あなたは、以下の方法を使用してトランジションアニメーションを使ってアニメーションを自分で実装する必要があります。

この場合、新しいビューはモーダル(controller.view)のコンテンツではなく、モーダルフレームそのものなので、設定ボタンから上記のメソッドを呼び出すだけで、渡す代わりに試してみてくださいcontroller.viewをcontroller.view.superviewに置き換え、それでも動かない場合は、controller.view.superview.superviewをアニメーションが正しく表示されるまで試してください。

これを行う方法を正しく理解するには、いくつかの調整が必要です。

+2

ありがとう、ニック。あなたの提案はほとんど一生働いた。_transitionFromView_は、_Login_モーダルダイアログを_Settings_1に反転しました。 _Settings_が表示されたときは、フルスクリーンサイズでした。小さいサイズのダイアログからフルスクリーンまで。これは、モーダルビューが現在のコンテキストで(上記のコードサンプルを使用して)遷移するように指示できるという事実と関係していると思います:controller.modalPresentationStyle = UIModalPresentationCurrentContext; – dbarros

関連する問題