使用滑动手势swift更改UISlider值

Ker*_*ean 1 uislider uigesturerecognizer ios swift

我有一个带滑动手势的UIView.

 let swipeUpGesture = UISwipeGestureRecognizer(target: self, action: #selector(NextStepCaptureVC.handleSwipeUp(gesture:)))
        swipeUpGesture.direction = .up
        view.addGestureRecognizer(swipeUpGesture)

func handleSwipeUp(gesture: UISwipeGestureRecognizer) {
        print("Swipe Up")
        heightSlider.setValue(20, animated: true)
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试更改它的值时,但值从0跳到20.我希望值在刷卡时连续变化.我该怎么做?

Dav*_*mes 5

从您的代码来看,看起来您正试图在屏幕上"向上和向下平移"转换为UISlider值的变化.

正如其他人已经提到的,首先要改变你UISwipeGestureRecognizer的态度UIPanGestureRecognizer

let pan = UIPanGestureRecognizer(target: self, action: #selector(pan(gesture:))) 
view.addGestureRecognizer(pan)
Run Code Online (Sandbox Code Playgroud)

然后在您的平移功能中,您需要根据用户平移的程度更新滑块值.

func pan(gesture: UIPanGestureRecognizer) {
    // The amount of movement up/down since last change in slider
    let yTranslation = gesture.translation(in: gesture.view).y

    // The slide distance needed to equal one value in the slider
    let tolerance: CGFloat = 5

    if abs(yTranslation) >= tolerance {
        let newValue = heightSlider.value + Float(yTranslation / tolerance)
        heightSlider.setValue(newValue, animated: true)

        // Reset the overall translation within the view
        gesture.setTranslation(.zero, in: gesture.view)
    }
}
Run Code Online (Sandbox Code Playgroud)

只需调整tolerance变量即可让用户更多/更少地滑动以调整滑块值.