2016-04-08 20 views
0

UIView (resimde kırmızı olanı) var. X ekseninde kaydırma yapabilirim. Görünümü orijinal pozisyona geri döndürebilirim, fakat bu pozisyona, bir açık yay ile çekiliyormuş gibi, ya da bir çeşit yavaşlama ile orijinal pozisyona geri dönme gibi geri dönmek istiyorum.Pan hareketinden sonra görünümü orijinal konumuna döndürme, hızlı kaydırma

Şu anda garip bir şekilde bu konuma atlar.

Bu benim ilgili kodumdur ve görünümü maksimum konumda göstermek için bir resim eklenmiştir.

@IBAction func handlePan(recognizer:UIPanGestureRecognizer) { 

     if recognizer.state == UIGestureRecognizerState.Ended { 

      print(backgroundView.center.x) //120.0 
      print(backgroundView.center.y) //64.0 

      let xDivision = Double(backgroundView.center.x/120.0) 
      print(xDivision) 

      recognizer.view?.center = CGPointMake(120.0, 64.0) 

      self.view.frame = CGRectMake(backgroundView.center.x, 0, self.view.frame.width , self.view.frame.height) 

      UIView.animateWithDuration(xDivision, delay: 0.0, usingSpringWithDamping: 2.0, initialSpringVelocity: 2.0, options: UIViewAnimationOptions.CurveEaseIn, animations: { 

       self.view.center.x = 120.0 

       }, completion: { (true) in 

        print("Animation Complete") 
        print(self.backgroundView.center.x) 
      }) 



     } 

     let translation: CGPoint = recognizer.translationInView(self.view) 
     //recognizer.view?.center = CGPointMake((recognizer.view?.center.x)!, (recognizer.view?.center.y)! + translation.y) 
     recognizer.setTranslation(CGPointMake(0, 0), inView: self.view) 


     var center: CGPoint = (recognizer.view?.center)! 
     print(center.x) 
     center.x += translation.x 
     if center.x < 50.0 || center.x > 320.0 { 
      return 
     } 
     recognizer.view?.center = center 

    } 

bunu elde edebilirsiniz nasıl Herhangi fikirler

enter image description here

. Bu animasyonun güzel bir örneği bu uygulama - http://rise.simplebots.co

Teşekkürler. Otomatik Düzen'i kullanıyorsanız, çerçeve veya merkez özelliklerini değiştirmek sorunlara neden olabilir.

cevap

1

Kısıtlamanın sabitini değiştirmeyi düşündün mü?

@IBAction func handlePan(recognizer:UIPanGestureRecognizer) { 

    switch recognizer.state { 
    case .Began: 
     //do something 

    case .Changed: 
     let translation = recognizer.translationInView(self.view) 
     self.leftContraint.constant = self.leftContraint.constant + translation.x 
     recognizer.setTranslation(.zero, inView: self.view) 

    case .Ended: 
     UIView.animateWithDuration(1, 
      delay: 0, 
      options: .CurveEaseOut, 
      animations: { 
       self.leftContraint.constant = //your value 
       self.view.layoutIfNeeded() 
      }, 
      completion: nil) 

    default:() 
    } 
} 

Benzer bir sorun bana yardımcı oldu.

İlgili konular