2012-11-11 8 views
6

ウィンドウのrootViewControllerをanimationに置き換えようとしていますが、部分的にしか動作しません。window.rootViewControllerをアニメーションで部分的に置き換えます

私はプログラム的にUINavigationControllerを作成 -

その後
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"InboxStoryboard" bundle:nil]; 

UIViewController *innerViewController = [storyBoard instantiateViewControllerWithIdentifier:@"centerView"]; 
UINavigationController *centerView = [[UINavigationController alloc] initWithRootViewController:innerViewController]; 

私はアニメーションブロックに包まれたウィンドウのルートビューコントローラ置き換える -

[UIView transitionWithView:self.viewController.view.window 
        duration:0.5 
        options: UIViewAnimationOptionTransitionFlipFromLeft 
       animations:^{ 
        self.viewController.view.window.rootViewController = centerView; 
       } 
       completion:nil]; 

何が起こることはアニメーションが起こるということですが、私のコントローラを作成は部分的にしか見えないので、次の画像を見てください。 -

回転中に表示されるように、ビューは部分的にしかレンダリングされません。

誰もこの種の行動に先立っていますか?

+0

バグ?シミュレータ上のアプリを削除してもう一度実行してください。 – MasterRazer

+0

あなたが投稿したコードの自己は何ですか?このコードを実行しているクラスは明確ではありません。 – rdelmar

+0

自分自身が別のUIObjectである別のUIViewControllerを持っています。 フローは - です。他のUIViewControllerでオブジェクトをインスタンス化し、オブジェクトを使用してルートビューコントローラを別のものに置き換えます。 AFAIKこれはかなり標準的な流れですが、それが部分的にレンダリングされる理由はまだ分かりません。また、私はアニメーションを使用せずに、ルートビューを置き換えるだけで動作します。 –

答えて

16

だから私が見つけ長い検索した後、問題は、私は完全に[UIView transitionFromView:..]作品を使用して

Swapping rootViewController with animationを見つけたstackoverflowの中でもう少し検索[UIView transitionWithView:...] にありました。

新しいコード

-

[UIView transitionFromView:self.window.rootViewController.view 
        toView:self.centerViewController.view 
        duration:0.5 
        options:UIViewAnimationOptionTransitionCurlUp 
       completion:^(BOOL finished) 
       { 
        self.window.rootViewController = self.centerViewController; 
       }]; 
+0

このコードは実際に動作していますか?これは、これはコンパイル時の警告を与えるので、動作しないはずです...あなたはrootViewControllerプロパティにUIViewを割り当てています...間違っています...あなたの答えを修正してください... – DShah

+1

ありがとう、答えを更新 –

0

自動レイアウトを使用していますか?その場合は、無効にしてみてください。私は自動レイアウトとアニメーションで複数の問題に遭遇しました。

関連する問題