1

重複の可能性:
CALayerが暗黙のアニメーションを作成しないようにするにはどうすればよいですか?

UIViewのレイヤーマスクとしてCAGradientLayerを使用しています。UIViewの一部のみを表示し、ユーザー入力に応じて、CAGradientLayerを変更することで表示されるビューの部分を変更できるようにすることを目的としています。

これはすべて正常に機能しますが、1つの問題が発生しました。表示されているUIViewの部分を変更するには、CAGradientLayerの次のプロパティの値を変更します。

startPointendPointの場所

これらの値をアニメーションブロックの外で変更しましたが、変更は画面でアニメーション化されます。デフォルトの短いアニメーションで実行されているように見えます(おそらく1秒の長さで、わかりにくいです)。

私の質問は、なぜ変更がアニメーション化されているのかということです。どうすればアニメーションを防ぐことができますか?(実際、私はアニメーションが欲しいのですが、このデフォルトのものではなく、自分で制御します)。

追加の観察として、これらのすべてのプロパティ(startPoint、endPoint、および場所)がアニメーション化可能としてフラグが立てられていることを知っていますが、これは、変更をアニメーション化するためにアニメーションブロック内に設定できることを意味するだけだと理解しています。

4

2 に答える 2

2

アニメーション化可能なプロパティの多くには、デフォルトのアニメーションがあります。それらを設定すると、デフォルトのアニメーションが発生します。

アニメーションブロックでプロパティを設定することにより、デフォルトのアニメーションをオーバーライドできます。アニメーションブロックのプロパティを変更すると、そのプロパティの以前のアニメーションはすべて新しいアニメーションに置き換えられます。

于 2013-01-04T19:57:55.787 に答える
0

CALayerへのほとんどの変更は、暗黙のアニメーションの下で行われます(たとえば、自動的にアニメーション化されます)。これを防ぐには、更新を次のコードでラップします。

[CATransaction begin];
[CATransaction setDisableActions:YES];
// Your changes to the layer here...
[CATransaction commit];
于 2013-01-04T21:28:02.903 に答える