2012-05-05 13 views
0

2つのUIViewControllerを持つかなりシンプルなアプリケーションがあります。 1つはメインビュー、2つ目はオプションページです。一方を他方にアニメートすると、回転が完了するまで、UISwitchesやその他のコントロールは完全に描画されません。アニメーションを使用しない場合、問題はありません。すべて正しく表示されます。コードは次のとおりです。アニメーションが完了するまでUIViewコントロールが描画されない

[UIView beginAnimations:@"View Flip" context:nil]; 
[UIView setAnimationDuration:1.0]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 

if (self.optionsViewController.view.superview == nil) 
{ 
    if (self.optionsViewController == nil) 
    { 
     self.optionsViewController = [[OptionsViewController alloc] initWithNibName:nil bundle:nil]; 
    } 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES]; 

    [self.view insertSubview:self.optionsViewController.view atIndex:127]; 
} 

[UIView commitAnimations]; 

答えて

2

キャッシュをNOに設定しましたか?キャッシングは、ビューをラスタライズされたフォームとして保存します。このフォームは、おそらくOptionsViewControllerのサブビューの途中で発生します。

また、iOS5ではるかに新しい、より優れたアニメーション方法の使用を検討する必要があります。

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

設定キャッシュ:ほとんど答えではありませんでした。 UISwitchコントロールはうまくいきましたが、UINavigationBar /ボタンが変わってしまいました。transitionFromViewへの切り替えはうまくいきました...本当の問題はおそらく私がルートUIViewControllerを持っていないことを除いて、メインのUIViewControllerから移行しようとしています。この時点では、他のビューの親子化以外には使用されていないルートコントローラを使ってアプリケーションをやり直す方が良いと思います。 – bratboy

関連する問題