iOS アプリ内に、アニメーション化、ジェスチャによる変換、シェーディング (クォーツコア シャドウを使用)、および編集が必要な uiview があります。これでアニメーションとジェスチャーを実行すると、非常に「ラグ」になります。アニメーションは iPhone ではそれほど「遅延」していませんが、iPad を使用すると、アニメーションはほとんど反応しなくなります (アプリがクラッシュしているように見えるところまで)。Instruments を使用してアプリをテストしましたが、アニメーションが始まるまでアプリはメモリ、CPU、電力をあまり消費しません。デバイスと Intel i7 8GB iMac の両方でテストしましたが、両方でアニメーションが「遅延」しています。UIView
私が実行しているアニメーションは複雑ではなく、X 軸を横切る単純な変換です。アニメーションに関連するすべてのコード行を調べたところ、これらの行が問題であることがわかりました。
viewer.layer.masksToBounds = NO;
viewer.layer.shadowOffset = CGSizeMake(-1, 1);
viewer.layer.shadowRadius = 3;
viewer.layer.shadowOpacity = 0.3;
上記のコードは、アニメーション化するたびに遅延する影をビューに追加します ( viewer
)。上記のコードを使用して、次のライン アニメーションを追加すると、うまく機能します。
viewer.layer.shouldRasterize = YES;
このコードの問題は、UIView 内に表示されるコンテンツの品質が大幅に低下することです ( viewer
)。shouldRasterize
YES に設定した画像を次に示します。
次に、なしのUIView shouldRasterize
:
これらのスクリーンショットは両方とも同じ Retina iPad のものです。
究極の質問: どうすればUIView
影のある でアニメーションをスムーズに実行できますか (できれば を使用QuartzCore
)? 品質を落とさずにコンテンツをラスタライズする方法はありますか?