假设我有一个动画器,可将视图从(0, 0)
移至(-120, 0)
:
let frameAnimator = UIViewPropertyAnimator(duration: duration, dampingRatio: 0.8)
animator.addAnimations {
switch state:
case .normal: view.frame.origin.x = 0
case .swiped: view.frame.origin.x = -120
}
}
我将其与UIPanGestureRecognizer
一起使用,以便可以随着手指的移动连续调整视图的大小。
当我想在动画的开头或结尾添加某种反弹效果时,就会出现问题。不只是阻尼比,还有反弹效果。想象这最简单的方法是UITableViewCell
的“滑动删除”功能,您可以将“删除”按钮拖动到其实际宽度之外,然后弹回。
有效地,我想实现的是在fractionComplete
段之外设置[0, 1]
属性的方法,因此,当小数为1.2
时,偏移量变为144
,而不是其最大值120。
现在,fractionComplete
的最大值正好是1
。
下面是一些使此问题可视化的示例:
假设我有一个动画器,它将视图从(0,0)移到(-120,0):let frameAnimator = UIViewPropertyAnimator(duration:duration,durationingingRatio:0.8)animator.addAnimations {切换状态:...] >
我从没使用过UIViewPropertyAnimator,所以对无法提供更多直接帮助深表歉意。但是,我已经成功复制了UITableView中的弹跳效果。
本质上,您已经设置了“自定义”单元格(在您的情况下,您使用的是UIView),当您调用了滑动操作时,完成后您要使用类似这样的视图来使视图恢复动画。注意:如果您在滑动手势代码上有完成处理程序,则将这个动画代码放在其中很有意义。