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