如何使 UIAction 按钮在越界时弹回

How to Make UIAction button Bounce Back when out of Bounds

我有一个可移动的 UIAction 按钮,类似于 Reddit 的向上滚动按钮和辅助触摸功能。现在我很难找到一种方法来: 1. 一开始就不要出界或 2. 以类似于辅助触摸的方式弹回屏幕。

这是我的 UIPanGesture 函数中的内容:

@IBAction func dragSettingsButton(_ sender: UIPanGestureRecognizer) {

    if sender.state == .began || sender.state == .changed {

        if displayView.frame.contains(sender.location(in: self.view)) {

            let translation = sender.translation(in: displayView)
            // note: 'view' is optional and need to be unwrapped
            sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
            sender.setTranslation(CGPoint.zero, in: displayView)


        }
        else {

            print("WOW BRO YOURE OUT OF BOUNDS")
        }
    }

}

注意事项:我有一个 ViewController,其中有 3 个视图:一个用作自定义导航栏的视图,一个用作自定义分段视图的视图,以及一个显示不同视图的显示视图切换分段视图时的视图。 底部还有Tab栏

反弹:

On sender.state == .end 使用相同的逻辑来确定它是否越界。如果是这样计算它应该在哪里。然后将其动画化到该位置。