You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Swift中检测屏幕滑动的速度与角度并存储为数值类型

当然可以做到!在iOS开发里,用Swift实现滑动角度和速度的捕获、存储完全没问题,咱们直接用系统的UIPanGestureRecognizer就能搞定,而且结果可以轻松存成Double或Float类型。下面一步步给你讲清楚:

核心实现逻辑
  • 捕获滑动手势:给需要检测滑动的视图(比如整个屏幕的view)添加UIPanGestureRecognizer,监听手势的状态变化。
  • 计算滑动角度:通过手势的translation(in:)方法获取滑动的位移向量,再利用三角函数atan2计算出角度(记得把弧度转成常用的角度值)。
  • 计算滑动速度:手势自带velocity(in:)方法,能直接拿到滑动的x、y方向速度,用勾股定理就能算出合速度的大小。
完整代码示例
import UIKit

class SwipeDetectionViewController: UIViewController {
    // 存储滑动角度和速度的变量,这里用Double类型,换成Float也完全可行
    var swipeAngle: Double = 0.0
    var swipeSpeed: Double = 0.0

    override func viewDidLoad() {
        super.viewDidLoad()
        setupPanGesture()
    }

    private func setupPanGesture() {
        // 创建平移手势识别器,并绑定处理方法
        let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handleSwipe(_:)))
        // 可以根据需求设置手势的最小滑动距离等参数
        panGesture.minimumNumberOfTouches = 1
        view.addGestureRecognizer(panGesture)
    }

    @objc private func handleSwipe(_ gesture: UIPanGestureRecognizer) {
        // 在手势变化或结束时计算数据
        guard gesture.state == .changed || gesture.state == .ended else { return }
        
        // 获取滑动的位移(相对于当前视图的坐标)
        let translation = gesture.translation(in: view)
        // 获取滑动的速度向量(单位:points/秒)
        let velocity = gesture.velocity(in: view)
        
        // 计算角度:atan2(y, x)得到弧度,转成角度(范围:-180° 到 180°)
        swipeAngle = Double(atan2(translation.y, translation.x)) * 180 / .pi
        
        // 计算合速度的大小:用勾股定理计算x、y方向速度的合值
        swipeSpeed = Double(sqrt(pow(velocity.x, 2) + pow(velocity.y, 2)))
        
        // 这里可以根据业务需求使用存储的角度和速度,比如更新UI或者上传数据
        print("当前滑动角度:\(String(format: "%.2f", swipeAngle))°,滑动速度:\(String(format: "%.2f", swipeSpeed)) points/sec")
    }
}
额外注意点
  • 角度范围调整:默认计算出的角度是-180°到180°,如果需要0°到360°的范围,可以加个判断:如果角度为负,就加上360。
  • 速度单位:velocity(in:)返回的速度单位是points/秒,和iOS的坐标系统一致,直接用就可以。
  • 变量类型转换:如果需要用Float类型存储,只需要把Double换成Float,计算时做相应的类型转换即可(比如Float(atan2(...)))。

内容的提问来源于stack exchange,提问作者Jia Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:57:31