16

経由でスタックに追加されたときにビューをフェードインさせたい

[self.view addSubview:someSecondaryViewController.view];

ビューがフェードイン (およびフェードアウト) するように、この呼び出しをアニメーション化するにはどうすればよいですか?

4

3 に答える 3

29

アニメートする前にアルファを 0 に設定してから、アルファを 1 にアニメートします。

[fadingView setAlpha:0.0];
[containerView addSubview:fadingView];
[UIView beginAnimations:nil context:nil];
[fadingView setAlpha:1.0];
[UIView commitAnimations];

ビューを削除する前に、アルファをアニメーション化してゼロに戻します。

ところで、ビュー階層はスタックというよりもツリーに近いものです。

編集:

ビューをフェードアウトするときにアニメーションが終了した後に他にクリーンアップがない場合は、次を使用します。

[UIView setAnimationDelegate:fadingView];
[UIView setAnimationDidStopSelector:@selector(removeFromSuperview)];

すでに didStopSelector を設定している場合は、そこで removeFromSuperview を呼び出します。

于 2010-05-17T00:45:56.193 に答える
21

また、ブロックを使用して、フェード アウト アニメーションが終了した後でスーパー ビューからビューを削除することもできます。

[UIView animateWithDuration:0.2
                 animations:^{viewOut.alpha = 0.0;}
                 completion:^(BOOL finished){[viewOut removeFromSuperview];}];
于 2011-03-17T10:13:47.157 に答える