如何使 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 使用相同的逻辑来确定它是否越界。如果是这样计算它应该在哪里。然后将其动画化到该位置。
我有一个可移动的 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 使用相同的逻辑来确定它是否越界。如果是这样计算它应该在哪里。然后将其动画化到该位置。