The*_*Guy 3 animation objective-c ios
我正在尝试UIPangestureRecognizer用来模拟"弹性"效果.我想拖动一个UIView,但它应该出现在他的超级视图的特定点上.
我尝试使用这个代码,用乘数减少offeset,但它是线性的,效果不是我想要的.
float percentage = distance / maxDistance;
float multiplier = (1 - percentage) ;
CGPoint center = { self.targetView.center.x , self.targetView.center.y + translation.y * multiplier};
[self.targetView setCenter:center];
[recognizer setTranslation:CGPointZero inView:self.view];
Run Code Online (Sandbox Code Playgroud)
我找到了这个存储库https://github.com/warrenm/AHEasing,但我不明白我该如何使用ExponentialEaseOut.
我实际上找到了一个非常简单的解决方案.不知道为什么你在这里需要第三方库,一般来说,如果我不需要,我倾向于避免使用它们.
你的朋友在这里是双曲正切(tanh)函数.它以45度穿过x轴,然后在输入值2之后立即在1处触及渐近线.
我使用它来实现水平滑动以显示日期/时间(类似于在iOS7消息中完成的方式).使用此代码handlePan:
frameOffset = -OFFSET_MAX * tanh(translation.x / INPUT_SENSITIVITY);
Run Code Online (Sandbox Code Playgroud)
使用OFFSET_MAX和INPUT_SENSITIVITY进行调整以根据您的需要进行调整.我使用80.0f作为OFFSET_MAX(最大距离我希望滑动移动视图)和150.0f作为INPUT_SENSITIVITY.
...
对于端盘动画,您可以使用选项字段UIView animateWithDuration来设置正确的动画曲线.在持续时间内,您可以使用固定的持续时间(例如,0.15秒),也可以根据总偏移量预返回值来缩放该值.鉴于人们期望更快的"回弹"以获得更大的偏移,我发现使用固定的持续时间通常看起来相当不错.
| 归档时间: |
|
| 查看次数: |
845 次 |
| 最近记录: |