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.我希望值在刷卡时连续变化.我该怎么做?
从您的代码来看,看起来您正试图在屏幕上"向上和向下平移"转换为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
变量即可让用户更多/更少地滑动以调整滑块值.
归档时间: |
|
查看次数: |
1657 次 |
最近记录: |