0
我發現這個代碼線上平移視圖時實現該橡膠帶效應:如何實現橡皮筋效果?
@IBAction func viewDragged(sender: UIPanGestureRecognizer) {
let yTranslation = sender.translationInView(view).y
if (hasExceededVerticalLimit(topViewConstraint.constant)){
totalTranslation += yTranslation
topViewConstraint.constant = logConstraintValueForYPoisition(totalTranslation)
if(sender.state == UIGestureRecognizerState.Ended){
animateViewBackToLimit()
}
} else {
topViewConstraint.constant += yTranslation
}
sender.setTranslation(CGPointZero, inView: view)
}
func logConstraintValueForYPoisition(yPosition : CGFloat) -> CGFloat {
return verticalLimit * (1 + log10(yPosition/verticalLimit))
}
所得效果示於下面的GIF:
然而,我有麻煩理解代碼如何工作,並在我自己的項目中再現這種效果。例如,我不明白的一件事是,向上平移綠色視圖時yTransition
將是負數,負數不會有對數(在logConstraintValueForYPoisition(:)
方法中)。如果有人能夠向我解釋這段代碼如何一步一步地工作,我會非常感激。
The original post can be found here.
你可以使用'UIView.animate(:usingSpringWithDamping)'也有彈簧動畫 – Tj3n
@ Tj3n:他們確實使用它。日誌是爲了別的。 – Dair
猜測日誌正在用於彈簧動畫所具有的最大位置 – Tj3n