让PanGesture成为滑块

时间:2016-10-28 11:06:02

标签: ios swift slider gesture percentage

我将PanGuesture作为滑块,这里的响应是响应功能:

func respondsToPenGesture(sender: UIPanGestureRecognizer) {
    if (sender.state == UIGestureRecognizerState.Began) {
        if noFilterEffectButton.selected == false {
            startPanLocation = sender.locationInView(self.newEffectView)
            persentageNumber.text = String(startNumber)
            persentageNumber.hidden = false
        }
    } else if (sender.state == UIGestureRecognizerState.Changed) {
        let stopLocation = sender.locationInView(self.newEffectView)
        let abscissaChange = stopLocation.x - startPanLocation!.x
        if newEffectView.hidden == false {
            if abs(abscissaChange) > 0 {
                if noFilterEffectButton.selected == false{
                    if let effectCurrent = self.currentEffect {
                        effectCurrent.adjustParams(CGFloat(abscissaChange/6))
                    }
                }
            }
            if noFilterEffectButton.selected == false {
                var printChangingNumber = startNumber + Int(abscissaChange)
                if printChangingNumber > 100 {
                    printChangingNumber = 100
                } else if printChangingNumber < 0 {
                    printChangingNumber = 0
                }

                persentageNumber.text = String(printChangingNumber)
            }
        }                         
    } else if (sender.state == UIGestureRecognizerState.Ended) {
        let stopLocation = sender.locationInView(self.newEffectView)
        let abscissaChange = stopLocation.x - startPanLocation!.x
        startNumber = startNumber + Int(abscissaChange)
        if startNumber > 100 {
            startNumber = 100
        } else if startNumber < 0 {
            startNumber = 0
        }

        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(0.5*Double(NSEC_PER_SEC))), dispatch_get_main_queue()) {             
            self.persentageNumber.text = String(self.startNumber)
            self.persentageNumber.hidden = true

        }
    }
}

percentageNumber是一个标签,显示屏幕上的更改。而adjustParams()函数:

func adjustParams(value: CGFloat) {
    newValue = value + newValue
    self.adjust = newValue

    print("AdjustNumber")
    print(adjust)
}

我完全覆盖了这个函数:

override func adjustParams(value: CGFloat) {
    super.adjustParams(value)
    lastAutValueChange = lastAutValueChange + value/200
    lastIntensityChange = lastIntensityChange + value/200
    var currentAutValue = lastAutValueChange
    var currentIntValue = lastIntensityChange

    currentIntValue = currentIntValue < -1.0 ? -1.0 : currentIntValue
    //value = value > 1.0 ? 1.0 : value
    //autValue = value < -1.0 ? -1.0 : autValue

    if (currentIntValue >= 0) {
        currentIntValue = 1.0
    } else {
        currentIntValue += 1
    }
    if (currentAutValue <= 0) {
        currentAutValue = 0
    } else {
        if currentAutValue > 1 {
            currentAutValue = 1
        }
    }
    print(currentIntValue)
    print(currentAutValue)


    self.autoTuneModule.setIntensity(Float(currentIntValue))
    self.audioUnit.finalMix = Double(currentAutValue)
}

测试答案不能与准确的更改匹配,并且百分比数字会在屏幕上显示。我怎样才能改变我的功能以使它们能够与其他人匹配?

(顺便说一句,我想做一些像Prisma中的滑块,如果有类似的东西,请让我知道它。)

0 个答案:

没有答案