私は、ビューをパンするときゴムバンドの効果を実現し、このコードをオンラインが見つかりました:ラバーバンド効果を実装する方法は?
@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に示されている。しかし、私は悩みを理解している
このコードがどのように機能し、自分のプロジェクトでこの効果を再現しているかを示します。たとえば、私が理解できないことの1つは、緑色のビューを上にパンするとyTransition
は負になり、負の数は対数を持たないことになります(logConstraintValueForYPoisition(:)
メソッドで)。誰かがこのコードがどのように動作するかを私に説明することができれば、本当に感謝しています。
The original post can be found here.
'UIView.animate(:usingSpringWithDamping)'を使用して、スプリングアニメーションを使用することもできます。 – Tj3n
@ Tj3n:それらはそれを使用します。ログは他のもののためのものです。 – Dair
春アニメーションが持つ最大オーバーポジションにログが使用していると推測します – Tj3n