【发布时间】:2016-04-08 14:54:05
【问题描述】:
我有一个UIView(图像中的红色),我可以在 x 轴上平移。我可以将视图返回到原始位置,但我想返回到那个位置,就好像它被轻弹簧拉动一样,或者通过某种减速慢慢回到原始位置。
此刻它奇怪地跳回到那个位置。
这是我的相关代码,并附上一张图片以显示视图的最大位置。
@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
}
关于我如何实现这一目标的任何想法。这个动画的一个很好的例子是这个应用程序 - http://rise.simplebots.co
谢谢。
【问题讨论】:
标签: ios swift uiview uipangesturerecognizer