サブレイヤーの不透明度を明示的に設定していませんopacity
。プロパティを介してスーパーレイヤーのみを設定しています。スーパーレイヤーの不透明度は予想どおりに変化しますが、サブレイヤーの不透明度も変化しているように見え、スーパーレイヤー内のサブレイヤーの下にある要素が露出します。なぜこれが起こっているのでしょうか?
質問する
2493 次
1 に答える
5
なぜこれがあなたを驚かせるのですか?何が起こると思いましたか?これが必要ない場合は、それらのサブレイヤーをそのスーパーレイヤー内に配置しないでください。それらをその上に置くだけです(おそらく別のスーパーレイヤーに)。
編集:私はあなたの問題を今理解しています。CoreAnimationの最適化に直面しています。Core Animationは、合成する前にすべてのサブレイヤーに不透明度を適用するだけで時間を節約しようとしています。そうすれば、1回だけ合成できます(これにより、コンテナーのスーパーレイヤーを無視できます)。ほとんどの場合、これはうまくいき、パフォーマンスを向上させます。
スーパーレイヤー内ですべての合成を行い、不透明度を適用して、結果を他のすべてのものと再合成します。これはラスタライズと呼ばれます。これは基本的に「私を他のものと合成する前に、私をビットマップに変えてください」という意味です。スーパーレイヤーに設定することで、これをリクエストできshouldRasterize
ます。
于 2012-07-11T14:51:14.043 に答える