ビューのレイヤーに直接円を描くと、デバイスの回転は完璧に見えます。デバイスの回転中にCALayerのサブレイヤが正常に動作しない
描画はfunc draw(_ rect: CGRect)
メソッドで行われます。
次に、サブレイヤで円を描き、それをinitメソッドのビューに追加しました。
func draw(_ rect: CGRect)
メソッドでサブレイヤのフレームを更新します。
デバイスのローテーションが完了する前にサブレイヤが更新されているような気がします。 したがって、最初の画像は以下のとおりです。
この外観を少し改善するための簡単な修正は、サブビューレイヤーをクリップすることです。 この方法では、円はメインビュー(オレンジ色のビュー)にブリードしません。
これは主な問題を修正するものではありませんが、 サブレイヤを追加することでこの問題が発生する理由はわかりません。
また、スーパービューの描画メソッドでサブレイヤのコンテンツを描画します。オレンジ色の表示は、スーパービューが回転中
注真ん中
で長方形のスーパービューであるされていない:私はすべてのためのコード例を追加しませんでした私が見た事例も同じ問題を抱えています。 他の方法は、ビューのサイズをハードコーディングすることでこれを解決します。したがって、回転によってビューのサイズが変更されることはありません。 また、ポートレートモードで表示をロックする傾向があります。
例のコードが必要な場合は簡単な例を作成できますが、
layoutSubviewメソッドでレイヤーを描画しようとしましたか? – Ocunidee
あなたは簡単な例を提供できますか? @ 3366784 –
サンプルコードの素晴らしい記事が見つかりました。私の答えを見てください。 – 3366784