0

メイン ウィンドウのコンテンツ ビュー内に 1 つのビューを含むテスト プロジェクトを作成します。ウィンドウには、表示と非表示の 2 つのボタンがあります。表示ボタンが押されたときにビューの外観をアニメーション化し、非表示ボタンが押されたときに非表示をアニメーション化します。そして、レイヤーアクションでこれを行いたいです。つまり、ビューがスーパービューに追加または削除されるたびにアニメーションを作成したいのです。したがって、コードで [parent addSubview:view] または [view removeFromSuperview] を記述したいだけで、その瞬間にアニメーションが機能するはずです。したがって、レイヤーアクションは私のニーズに合っているようです。

アプリのスクリーンショットとソース コード(XCode 4.6) は次のとおりです。

ここに画像の説明を入力

これを行うために私がしたことは次のとおりです。

表示/非表示のビューを作成し、レイヤー アクションを追加します。

_coloredView = [[ColoredView alloc] initWithFrame:NSMakeRect(0, 0, 200, 200)];
_coloredView.bgColor = [NSColor yellowColor];
_coloredView.wantsLayer = YES;

// making appear transition from left

CATransition *appearTransition = [CATransition animation];
[appearTransition setDuration:2];
[appearTransition setType:kCATransitionPush];
[appearTransition setSubtype:kCATransitionFromLeft];
[_coloredView.layer addAnimation:appearTransition forKey:kCAOnOrderIn];

次に、表示ボタンがクリックされると、呼び出します

[contentView addSubview:self.coloredView];

クリックして消えると、次のように呼び出します。

[self.coloredView removeFromSuperview];

そして、物事の一部が機能しているようです。最初は黄色の四角形が表示されます。しかし、ここに非常に奇妙なもののリストがあります:

  1. addAnimation:forKey:最初に表示されたアニメーションが機能しなくなるため、(ビューが消えた後) ボタンがクリックされるたびに呼び出す必要があります。

  2. Disappear はまったく機能しません (ビューの初期化後、または [消える] ボタンが押される前にコードを追加しようとすると)

  3. アニメーターを使用してサブビューを追加しようとすると、トランジションが機能せず、デフォルトのフェードイン アニメーションが表示されるだけです。

  4. 左から右への移動中に、ある種のフェージングが機能するようです。期間をより大きな値に設定すると表示されます。

4

1 に答える 1

0

@"subviews"代わりに試してくださいkCAOnOrderIn

于 2013-03-14T16:20:11.970 に答える