0

カスタム描画コードをビューから に移動しようとしていますCAShapeLayer。これは、サブレイヤーとして元のビューの に追加されますCALayer。これもうまく機能しますが、デバイスを回転させると、アニメーションが途切れ始めます。たとえば、フレームが元の向きで表示され、最終的な向きで表示され、その間に最大で 1 つのフレームが表示されます。まったく滑らかではありません。対応するスライドインとスライドアウトのアニメーションUIViewControllerも少しぎくしゃくしています (ただし、それほどではありません)。

CAShapeLayerその中のすべてpathは 1CGPathAddRectで、 に設定されopaqueopacityは で1.0fあり、fillColorは不透明な青に設定されています。

ただし、ビュー メソッドでパスを直接描画するdrawRectと、アニメーションスムーズになります。CAShapeLayerだから、ローテーション中にアニメーション化されることと関係があると思います。

これらのぎこちなさを取り除く方法、またはCAShapeLayerアニメーション時に単に非表示にする方法を教えていただけますか? s を直接描画するだけに戻ることは、私にはオプションではありません。これは、そのパスをアニメーション化CGPathする機能に依存しているためです(ビューを回転させようとしてもアニメーション化されません)。CAShapeLayer

/update: これは、回転するUIViewControllers ビューに のサブクラスを持つCAGradientLayerビューlayerClass(背景としてグラデーション レイヤーを持つビューなど) が含まれている場合にも発生します。

乾杯

ミスターメイジ

4

2 に答える 2

0

hide プロパティがあり、非表示にCAShapeLayerしてからアニメーションを実行できます。次に、非表示を解除するメソッドを呼び出して、CAShapeLayer回転中に表示されないようにすると、スムーズになります

于 2010-01-12T17:28:51.993 に答える
0

この問題は、iOS 4 で Apple によって修正されたようです。

于 2010-09-22T09:29:40.290 に答える