私は風景の中で大きく見えるCAKeyframeAnimationを持っていますが、デバイスが回転すると、他のコンテンツと比較してアニメーションは当然です。進行中のアニメーションのパスを調整(スケール)する方法はありますか?CoreAnimationとデバイスローテーション
編集:コード
let circle = CAShapeLayer()
circle.path = UIBezierPath(roundedRect: CGRect(x: -60.0, y: -60.0, width: 100.0, height: 100.0), cornerRadius: 50.0).cgPath
circle.fillColor = UIColor.clear.cgColor
circle.strokeColor = UIColor.blue.cgColor
let animation = CAKeyframeAnimation(keyPath: "position")
animation.duration = (path["endTime"] as! Double) - (path["startTime"] as! Double)
animation.repeatCount = 0
animation.path = (path as! UIBezierPath).cgPath
animation.calculationMode = kCAAnimationPaced
animation.fillMode = kCAFillModeForwards
animation.isRemovedOnCompletion = false
circle.add(animation, forKey: "position")
self.view.layer.insertSublayer(circle, at: 5)
、問題はUIBezierPathを縦または横のいずれかで定義されていることである(APPの両方をサポートしている)ので、それが作成されたのと同じ向きで再生が問題ありませんを追加しますデバイスを回転させると、UIBezierPathで定義されたアニメーションを新しい方向に更新する必要があります。私はそれがアニメーション化している間に、新しい座標系へのCAKeyframeAnimationパスを更新する方法を探しています。
私たちに見せるためのコードはありますか? – dfd
あなたはアニメーションを変更したいと言っていますが、アニメーションの途中です_ユーザーがデバイスを回転させたためですか? – matt
正確に!座標系が変更されるため、パスを更新する必要があります。私はそれをどうやって行うのか分かりません。 – Chris