7

ウィンドウ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];

何が起こるかというと、アニメーションは発生しますが、私が作成したコントローラーは部分的にしか表示されません。次の図を見てください-

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

以前にこの種の行動にぶつかった人はいますか?

4

2 に答える 2

16

したがって、長い検索の結果、問題はスタックオーバーフローで[UIView transitionWithView:...] もう少し検索することにあることがわかりました。rootViewControllerをアニメーションと入れ替えることがわかりました。

使用[UIView transitionFromView:..]は完璧に機能します。

新しいコード-

[UIView transitionFromView:self.window.rootViewController.view
                    toView:self.centerViewController.view
                  duration:0.5
                   options:UIViewAnimationOptionTransitionCurlUp
                completion:^(BOOL finished)
                {
                    self.window.rootViewController = self.centerViewController;
                }];
于 2012-12-20T09:37:04.847 に答える
0

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

于 2012-11-30T00:38:23.513 に答える