2011-07-19 29 views
0

標準の右から左への切り替えではなく、下から上への表示コントローラーの解除を試みています。これはすべて可能ですか?ここに私がこれまで持っているコードはあります:右から左にではなく、下から上へUIViewControllerを閉じる

CGRect screenRect = [[UIScreen mainScreen] applicationFrame]; 

CGRect endFrame = self.view.frame; 
endFrame.origin.y = screenRect.origin.y - screenRect.size.height; 

UIView *aView = [[self.view retain] autorelease]; 
[self.view.window addSubview:aView]; 
aView.frame = CGRectMake(0, 0, 320, 460); 
[UIView animateWithDuration:0.5 
       animations:^{ 
        [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
        aView.frame = endFrame; 
       } 
       completion:^(BOOL finished) { 
        [self dismissModalViewControllerAnimated:NO]; 
        [aView removeFromSuperview]; 
       } 
]; 

これは遷移の結果です。以前のビューコントローラーは、アニメーションの後まで表示されません。なぜなら、アニメーションが完了した後まで解消できないからです...アイデアは何ですか?

+0

ナビゲーションコントローラベースのアプリケーションを使用していますか? – booleanBoy

+0

はい、ナビゲーションコントローラベースのアプリケーションです – avenged

+0

presentModalViewControllerを試しましたか? – booleanBoy

答えて

2

あなたがpresentModalViewControllerを表示すると、ビューが自動的に隠れてしまいます。必要なことは表示されず削除されますが、View Controllerビューはメインビューのサブビューとして追加されます。その後、オフスクリーンでアニメーションを作成し、競技ハンドラのFromSuperviewを削除します。

+0

これは推奨されるアプローチですか?私は過去に別のコントローラにサブビューとしてUIViewControllerを追加することをアドバイスする記事を見てきました。 1画面あたり1つのビューコントローラ。 – avenged

+0

この方法は完全に機能するので、私は先に進み、それを良い解決策として受け入れます。 UIViewControllerを別のコントローラにサブビューとして追加すると、View Controllerのフルスクリーンを使用していないときにほとんどの問題が発生するようです。 – avenged

+0

これは完全に良い解決策です。実際、iOS5まではこれが唯一の方法です。 presentModal、dismissModalメソッドを使用するときには、非常によく似たことをしています。 –

関連する問題