2017-07-21 4 views
0

私のアプリにパンジェスチャーレコグナイザーがあり、スワイプダウンすると機能します。アニメーションはスムーズにされていましたが、突然(ビューコントローラにコードを追加することなく)非常に遅くなってしまいました。アニメーションを行うためにすばやくスワイプしなければなりません。私のパンジェスチャーレコグナイザが非常に遅く応答しません

あなたがゼロに戻す翻訳・ポイントを設定する必要がパンジェスチャーの翻訳を再生した後、その

class PhotoViewController: UIViewController, CLLocationManagerDelegate, UIPickerViewDataSource, UIPickerViewDelegate { 

    override var prefersStatusBarHidden: Bool { 
     return true 
    } 

    private var backgroundImage: UIImage 
    private var backgroundImageView: UIImageView? 
    private var picker: UIPickerView 
    var list: [String] 
    var locationPicked: String 
    var locationArray: [Any] 
    var partyIndex: Int = Int() 


    init(image: UIImage) { 
     self.backgroundImage = image 
     self.picker = UIPickerView() 
     self.list = ["Loading..."] 
     self.locationPicked = list[0] 
     self.locationArray = [] 
     super.init(nibName: nil, bundle: nil) 
     print(image) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    /************************************/ 



    override func viewDidLoad() { 
     super.viewDidLoad() 

     if Reachability.isConnectedToNetwork() == true{ 
      mapApi() 
     } 

     let backgroundImageView = UIImageView(frame: view.frame) 
     backgroundImageView.image = backgroundImage 
     backgroundImageView.isUserInteractionEnabled = true 

     self.backgroundImageView = backgroundImageView 

     let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(panGestureRecognizerAction(_:))) 
     backgroundImageView.addGestureRecognizer(panGestureRecognizer) 

     let longGesture = UILongPressGestureRecognizer(target: self, action: #selector(longTap(sender:))) 
     backgroundImageView.addGestureRecognizer(longGesture) 

     view.addSubview(backgroundImageView) 

     view.backgroundColor = greenColor 


     picker.dataSource = self 
     picker.delegate = self 
     picker.frame = CGRect(x: ((self.view.frame.width)/2)-84, y: (self.view.frame.height)-70, width: 160, height: 40) 
     picker.clipsToBounds = true 
     picker.layer.cornerRadius = picker.bounds.size.width/20 
     picker.layer.borderColor = redColor.cgColor 
     picker.layer.borderWidth = 0 
     picker.backgroundColor = UIColor(colorLiteralRed: 217/255, green: 83/255, blue: 79/255, alpha: 0.85) 
     backgroundImageView.addSubview(picker) 

     print(list) 
    } 

    func panGestureRecognizerAction(_ gesture: UIPanGestureRecognizer){ 

     let translation = gesture.translation(in: view) 

     if let bgImage = gesture.view{ 
      if list.count > 1{ 
       bgImage.frame.origin.y = translation.y 
      } 
     } 
     if gesture.state == .ended{ 

      let tickName = "Tick.png" 
      let tickImage = UIImage(named: tickName) 
      let tick = UIImageView(image: tickImage!) 
      tick.frame = CGRect(x: ((self.view.frame.width)/2)-25, y: 150, width: 70, height: 70) 
      self.view.addSubview(tick) 
      tick.alpha = 0 

      let crossName = "Cross.png" 
      let crossImage = UIImage(named: crossName) 
      let cross = UIImageView(image: crossImage!) 
      cross.frame = CGRect(x: ((self.view.frame.width)/2)-25, y: (self.view.frame.height)-75, width: 50, height: 50) 
      self.view.addSubview(cross) 
      cross.alpha = 0 

      let velocity = gesture.velocity(in: view) 

      if (gesture.view?.frame.origin.y)! > CGFloat(100) || velocity.y > 1500 { 


       UIView.animate(withDuration: 0.4, animations: { 

        self.view.backgroundColor = greenColor 
        gesture.view?.frame.origin = CGPoint(x: 0, y: 275) 
        tick.alpha = 1 

       }, completion: { (true) in 
        UIView.animate(withDuration: 0.4, delay: 0.2, animations: { 
         tick.alpha = 0 

        }) 

        if partyAt != nil{ 
         self.uploadPartyPost() 
        } else{ 
         self.uploadPost() 
        } 

      }) 

      UIView.animate(withDuration: 0.5, delay: 1, animations: { 

       gesture.view?.frame.origin = CGPoint(x: 0, y: 0) 

       }, completion: { (true) in 
        self.dismiss(animated: true, completion: nil) 
      }) 

      //send image here tick 



     } else if (gesture.view?.frame.origin.y)! < CGFloat(-80) || velocity.y > 1500 { 

      UIView.animate(withDuration: 0.2, animations: { 

       self.view.backgroundColor = redColor 
       gesture.view?.frame.origin = CGPoint(x: 0, y: -150) 
       cross.alpha = 1 

       }, completion: { (true) in 
        UIView.animate(withDuration: 0.5, delay: 0.7, animations: { 
         cross.alpha = 0 
        }) 

      }) 

      UIView.animate(withDuration: 0.2, delay: 1, animations: { 

       gesture.view?.frame.origin = CGPoint(x: 0, y: 0) 

      }, completion: { (true) in 

       self.dismiss(animated: true, completion: nil) 

      }) 

      print("Done") 


      //send image here cross 

     } else { 
      UIView.animate(withDuration: 0.3, animations: { 

       gesture.view?.frame.origin = CGPoint(x: 0, y: 0) 
      }) 
     } 
    } 
} 
+1

コードを追加してhttps://stackoverflow.com/help/how-to-ask – str

+0

を読んでください。それは数時間前に働いていたため、何も追加しなかったので。私はちょうどそれがメモリリークか何か@strであるかどうか疑問に思っていた –

+0

私はコードなしで助けることはできません。 – str

答えて

0

の原因は何ですか。

+0

で私の質問を編集します。 @vivek –

+0

あなたの電話がウイルスに感染しています... !!!! @jake – vivek

関連する問題