1

当使用 UISnapBehavior 将视图重置到屏幕中心时,我得到了预期的反弹效果。但是在滚动作为被捕捉视图的子视图的 UIScrollView 之后,UISnapBehavior 阻尼似乎有不同的基本计算。

我的快照行为是这样创建的:

    guard let recognizerView = recognizer.view else { return }
    let snapBehavior = UISnapBehavior(item: recognizer.view.superview!, snapTo: CGPoint(x: recognizerView.superview!.frame.width / 2, y: recognizerView.superview!.frame.height / 2))
    snapBehavior.damping = 0.1
    animator.addBehavior(snapBehavior)

在与作为识别器视图的子视图的滚动视图交互之前,snapBehavior 表现出非常夸张的反弹效果(这是所需和预期的行为),但在与滚动视图交互之后,然后再次触发 snapBehavior 效果更快(阻尼更少)尽管使用完全相同的阻尼常数。

我认为这与一些自动布局错误有关,因为滚动视图是使用自动布局定位的,并且它的内容大小是由自动布局约束动态计算的。

有趣的是,移除滚动视图会导致动态动画再次正确衰减。

4

0 回答 0