カスタム描画コードをビューから に移動しようとしていますCAShapeLayer。これは、サブレイヤーとして元のビューの に追加されますCALayer。これもうまく機能しますが、デバイスを回転させると、アニメーションが途切れ始めます。たとえば、フレームが元の向きで表示され、最終的な向きで表示され、その間に最大で 1 つのフレームが表示されます。まったく滑らかではありません。対応するスライドインとスライドアウトのアニメーションUIViewControllerも少しぎくしゃくしています (ただし、それほどではありません)。
CAShapeLayerその中のすべてpathは 1CGPathAddRectで、 に設定されopaque、opacityは で1.0fあり、fillColorは不透明な青に設定されています。
ただし、ビュー メソッドでパスを直接描画するdrawRectと、アニメーションはスムーズになります。CAShapeLayerだから、ローテーション中にアニメーション化されることと関係があると思います。
これらのぎこちなさを取り除く方法、またはCAShapeLayerアニメーション時に単に非表示にする方法を教えていただけますか? s を直接描画するだけに戻ることは、私にはオプションではありません。これは、そのパスをアニメーション化CGPathする機能に依存しているためです(ビューを回転させようとしてもアニメーション化されません)。CAShapeLayer
/update: これは、回転するUIViewControllers ビューに のサブクラスを持つCAGradientLayerビューlayerClass(背景としてグラデーション レイヤーを持つビューなど) が含まれている場合にも発生します。
乾杯
ミスターメイジ