2017-10-12 6 views
0

ユーザーがロゴを押した後にアニメーションを実行しています。 これはアニメーションです:長押しの3秒後Swift:iOSアニメーションは、MessageController(iOSのメッセージページ)を表示した後で終了します

func rightRotateView(targetView: UIView, duration: Double = 5) { 

    UIView.animate(withDuration: duration, delay: 0.0, options: [.repeat, .curveLinear] , animations: { 
     targetView.transform = targetView.transform.rotated(by: CGFloat.pi * 5) 

    }) { finished in 
     // self.rightRotateView(targetView: targetView) 
    } 
} 

(この時点でアニメーションがまだ実行する必要があります)、私は、ユーザーのメッセージコントローラを提示しています:

if MFMessageComposeViewController.canSendText() == true { 
     print(self.urgentNumber) 
     let recipients:[String] = ["\(self.urgentNumber as! String)"] 
     self.messageController.messageComposeDelegate = self as? MFMessageComposeViewControllerDelegate 
     self.messageController.recipients = recipients 
     self.messageController.body = "Hey,\nmy longitude: \(self.userLocation.coordinate.longitude) \nmy latitude: \(self.userLocation.coordinate.latitude)" 

     self.present(self.messageController, animated: true, completion: nil) 


    } else { 
     //handle text messaging not available 

    } 

ときIメッセージコントロールのキャンセルボタンを押すと、アニメーションページに戻りますが、アニメーションは停止します。 私が存在した後、アニメーションを再実行しようとした、と

func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { 

} 

におけるしかし、それは動作しませんでした。

答えて

0

私は(あなたがCABasicAnimationまたは単にUIView.animateを使用することができます)、完了で同じアニメーションを再実行し、問題を発見:

func rightRotateView(targetView: UIView, duration: Double = 5) { 

    UIView.animate(withDuration: duration, delay: 0.0, options: [.repeat, .curveLinear] , animations: { 
     targetView.transform = targetView.transform.rotated(by: CGFloat.pi * 5) 

    }) { finished in 
     let anim = CABasicAnimation(keyPath:"transform.rotation") 
     anim.fromValue = 0.000 
     anim.toValue = 360.0 
     anim.speed = 0.001 
     anim.repeatCount = .infinity 
     targetView.layer.add(anim, forKey: "transform.rotation") 
    } 

} 
+0

私はこれを試して、この実装を追加したときにアニメーションが再開されるのを見ました。アニメーションが中間にある場合は、アニメーションが再開し、不安定な効果が得られます。これを回避する方法はありますか? – ArielSD

-1

このCABasicAnimationのための使用(キーパス: "transform.rotation")

+0

より詳細な回答をいただければ幸いです。 – mahdi

+0

とにかく動作しませんでした – mahdi

+0

これに関連した詳細は本当に役立ちます - 私は同様の問題を抱えています。ありがとう! – ArielSD

関連する問題