2

私の UIViewController は、制御しているビューを取得して、次のように完全に再構築します。

[self.view rebuildYourself:bIsLandscape]; // this line is in the ViewController

ビュー自体には、次のメソッドが含まれます。

-(void)rebuildYourself:(BOOL)isLandscape
{
    NSArray *viewsToRemove = [self subviews];
    for (UIView *v in viewsToRemove) {
        [v removeFromSuperview];
    }

    [self addControls]; // adds lots of views
    [self layoutControlsWithOrientation:isLandscape]; // frames the views

}

トランジション全体をアニメーション化したいと思います。私はこれを試しました:

[UIView animateWithDuration:1.0
                      delay:0.0
                    options:UIViewAnimationOptionTransitionCurlUp
                 animations:^{
                             [self.view rebuildYourself:bIsLandscape];
                         }
                 completion:^(BOOL finished){

                         }];

ただし、アニメーションは UIViewAnimationOptionTransitionCurlUp のオプション値を無視し、毎回左上隅から流れ込みます。

そして私はこれを試しました:

[UIView beginAnimations:@"kkk" context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
[UIView setAnimationDuration:1.0];
[self.view rebuildYourself:bIsLandscape];
[UIView commitAnimations];

しかし、この場合、トランジションはうまくカールしますが、トランジションが終了するまで下にあるビューは空白になり、その後、新しいビューが突然「ポップ」してビューに表示され、トランジションの効果が損なわれます。

ビューが完全に再構築されるトランジションをアニメーション化する正しい/最良の方法を誰か教えてもらえますか?

ありがとう

4

1 に答える 1

3

2 つのビューを作成し、古いビューを新しく再構築されたビューの上に置きます。次に、新しいビューが表示されるように古いビューを「カールアップ」し、メモリから古いビューを削除します。

于 2012-06-14T13:10:50.267 に答える