大量(数百)の不透明度を小さなアニメーションにアニメーション化するにはいくつかの問題がありました。CALayers
私はCore Animationを使用していましたが、これを改善するためにはCVDisplayLink
を使用しました。何百ものCALayersのアニメーションのパフォーマンスは階層によって変化します
これらのレイヤーをすべて分離して不透明度をアニメーション化すると、パフォーマンスが非常に悪くなることがわかりました。 1つのより大きな含む層に
for layer in layersToAnimateIn {
layer.opacity = newOpacity
}
はすべて、これらの層を移動し、その不透明度をアニメーション化することは非常に良く扱うようだ:表示更新コードでは、私は単純にするだろう。パフォーマンスはそれほど劇的に変化する理由
私はそれぞれの場合に層の同じ量を扱っていて、視覚的な効果は同じであるので
containingLayer.opacity = newOpacity
、誰かが説明できますか?システムは明らかに私がスクリーンリフレッシュごとに何百ものレイヤーの不透明度を変えることを問題にしています。
洞察に感謝、ノア。暗黙的なアニメーションについての良い点は、私はそれをスキップしました。興味深いことに、私がそれらを無効にしたとき、パフォーマンスはほぼ同じままでした。最初に述べたように、問題はデータモデル側と関係している必要があります。 – Ricky