以下のコードでスワイプで遷移できるようなコードを実装しました.
遷移後の画面のviewDidAppearメソッド内でアニメーションをするメソッドを実行しているのですが,スワイプ途中にも関わらずアニメーションが開始してしまいます.これをスワイプが完全に完了したあとにアニメーションを開始したいのですが,どのように実装すればよいのでしょうか.ご教授のほどよろしくお願い致します.
swift
1//遷移前のclass 2 3extension UIViewController { 4 //スワイプで戻るメソッド 5 func setSwipeBack() { 6 let target = self.navigationController?.value(forKey: "_cachedInteractionController") 7 let recognizer = UIPanGestureRecognizer(target: target, action: Selector(("handleNavigationTransition:"))) 8 self.view.addGestureRecognizer(recognizer) 9 } 10} 11class SecondViewController: UIViewController{ 12override func viewDidLoad() { 13 super.viewDidLoad() 14 setSwipeBack() 15... 16}
すみません.説明不足でした.補足します.
遷移後のclassのコードと実行結果を載せました.
swift
1class ViewController: UIViewController { 2 3 @IBOutlet weak var animateLabal: UILabel! 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 // Do any additional setup after loading the view. 8 } 9 10 override func viewDidAppear(_ animated: Bool) { 11 super.viewDidAppear(animated) 12 self.animateView(self.animateLabal) 13 } 14 15 func animateView(_ target: UIView){ 16 UIView.animate(withDuration: 1.0, delay: 0.0, options: .autoreverse, animations: { 17 target.frame.origin.x = 0 18 }, completion: { _ in 19 target.center.x = self.view.center.x 20 self.animateView(target) 21 }) 22 } 23}
画像のように中央より左に行ったりとlayoutがおかしくなってしまうので遷移後にアニメーションを開始したいです.
>>スワイプ途中にも関わらずアニメーションが開始してしまいます
まずは、これが事実であることを証明できる材料を提示して下さい。
>>遷移前のclassのコードと実行結果を載せました.
「遷移後」の間違いでしょうか?
申し訳ありません.遷移後でした.修正します.
遷移って戻ることでしたか。
ViewController からSecondViewControllerに遷移するときにアニメーションを止めてますか?
はい.わかりにくくて申し訳ないです.
遷移するときにアニメーションは止まるものだと思っていました.ボタンを押したときにアニメーションを止めて,viewDidAppear内で再開するようにコードを書いたら上手くいきました.ありがとうございます!
ベストアンサーに選ばせていただきたいのでお手数ですが回答にて空白でいいので投稿してもらってもよろしいでしょうか?
自己解決でどうぞ。

回答1件
あなたの回答
tips
プレビュー