Ios 如何通过触摸按钮将UISlider缓慢向左或向右移动?

Ios 如何通过触摸按钮将UISlider缓慢向左或向右移动?,ios,swift,uislider,Ios,Swift,Uislider,我有这两个按钮,如果我按下左边的按钮,我希望滑块慢慢地向左移动,当我按下右边的按钮时,滑块也会向右移动。我现在的代码移动滑块的速度非常快,我希望它能逐渐移动 override func didMoveToView(view: SKView) { middleSlider = UISlider(frame: CGRectMake(self.view!.bounds.width/2 - 150/2, self.view!.bounds.height/2 * 1.7, 150, 50

我有这两个按钮,如果我按下左边的按钮,我希望滑块慢慢地向左移动,当我按下右边的按钮时,滑块也会向右移动。我现在的代码移动滑块的速度非常快,我希望它能逐渐移动

override func didMoveToView(view: SKView) {

        middleSlider = UISlider(frame: CGRectMake(self.view!.bounds.width/2 - 150/2, self.view!.bounds.height/2 * 1.7, 150, 50))
        middleSlider.tintColor = UIColor.whiteColor()
        middleSlider.minimumTrackTintColor = UIColor.whiteColor()
        middleSlider.maximumTrackTintColor = UIColor.whiteColor()
        middleSlider.setThumbImage(UIImage(named: "mixerb1"), forState: UIControlState.Normal)
        middleSlider.maximumValue = 2.0
        middleSlider.minimumValue =  0.0
        middleSlider.value = 1.0
        middleSlider.continuous = true
        middleSlider.userInteractionEnabled = true
        middleSlider.addTarget(self, action: #selector(middleSliderChangeAudio), forControlEvents: UIControlEvents.AllEvents)
        self.view?.addSubview(middleSlider)

}


override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        let location = touch.locationInNode(self)
        let node = self.nodeAtPoint(location)


        if node.name == "left" {
        print("slider moves to left")

        UIView.animateWithDuration(10.0, animations: {
            self.middleSlider.value = self.middleSlider.minimumValue
            self.middleSlider.continuous = true
      }
   )
}


    if node.name == "right" {
    print("slider moves to right")

        UIView.animateWithDuration(10.0, animations: {
            self.middleSlider.value = self.middleSlider.maximumValue
            self.middleSlider.continuous = true
            }
        )
    }
}
覆盖func didMoveToView(视图:SKView){
middleSlider=UISlider(帧:CGRectMake(self.view!.bounds.width/2-150/2,self.view!.bounds.height/2*1.7150))
middleSlider.tintColor=UIColor.whiteColor()
middleSlider.minimumTrackTintColor=UIColor.whiteColor()
middleSlider.maximumTrackTintColor=UIColor.whiteColor()
middleSlider.setThumbImage(UIImage(名为:“mixerb1”),用于状态:UIControlState.Normal)
middleSlider.maximumValue=2.0
middleSlider.minimumValue=0.0
middleSlider.value=1.0
middleSlider.continuous=true
middleSlider.userInteractionEnabled=true
middleSlider.addTarget(自身,操作:#选择器(middleSliderChangeAudio),用于控制事件:UIControlEvents.AllEvents)
self.view?.addSubview(中间滑块)
}
覆盖功能触摸开始(触摸:设置,withEvent事件:UIEvent?){
let location=touch.locationInNode(自)
设node=self.nodeAtPoint(位置)
如果node.name==“左”{
打印(“滑块向左移动”)
UIView.animateWithDuration(10.0,动画:{
self.middleSlider.value=self.middleSlider.minimumValue
self.middleSlider.continuous=true
}
)
}
如果node.name==“右”{
打印(“滑块向右移动”)
UIView.animateWithDuration(10.0,动画:{
self.middleSlider.value=self.middleSlider.maximumValue
self.middleSlider.continuous=true
}
)
}
}
在此处使用setValue(uuquo:animated:)方法。 让我们知道进展如何

一旦你添加了这个,在你的动画中像这样用持续时间包装它。请注意,10秒只是一个硬编码的值,将持续时间更改为您想要的任何值,您想要设置的值也是如此

@IBAction func moveSlider(sender: UIButton) {
    UIView.animateWithDuration(10, animations: {
        self.slider.setValue(1.0, animated: true)
    })


}
此时,向上滚动一点,查看文档中的属性值。因此,您可以更好地了解正在发生的事情。

在此处使用setValue(uw0;:animated:)方法。 让我们知道进展如何

一旦你添加了这个,在你的动画中像这样用持续时间包装它。请注意,10秒只是一个硬编码的值,将持续时间更改为您想要的任何值,您想要设置的值也是如此

@IBAction func moveSlider(sender: UIButton) {
    UIView.animateWithDuration(10, animations: {
        self.slider.setValue(1.0, animated: true)
    })


}

此时,向上滚动一点,查看文档中的属性值。因此,您对发生的事情有了更好的理解。

问题是
self.middleSlider.value
不是可动画的属性,因此您根本无法获得任何动画。我应该使用什么?问题是
self.middleSlider.value
不是可动画的属性,所以你根本没有得到任何动画。我应该使用什么呢?问题是你不能设置速度,而且不管怎样,它已经坏了。然后只需将它包装在一个带有持续时间的动画中()我在Xcode 7.3上测试了它,它工作得很好。在编辑原因OP已经有了它之前,我没有特别提到animateWithDuration,所以我只是给他指出了一个方向,不是设置属性值,而是调用setValue方法,还要求他检查文档中的值,这样他就知道实际发生了什么。我现在理解了,它也起作用了。我有一个问题,当我将属性continuous设置为true时,为什么它不更新滑块?滑块只在我用手指移动它时起作用,但在我使用按钮时不起作用。我必须查看按钮的代码。你的IBAction怎么样?问题是你不能设置速度,而且它已经坏了。然后用一个带持续时间的动画来包装它(),我在Xcode 7.3上测试过,它工作得很好。在编辑原因OP已经有了它之前,我没有特别提到animateWithDuration,所以我只是给他指出了一个方向,不是设置属性值,而是调用setValue方法,还要求他检查文档中的值,这样他就知道实际发生了什么。我现在理解了,它也起作用了。我有一个问题,当我将属性continuous设置为true时,为什么它不更新滑块?滑块只在我用手指移动它时起作用,但在我使用按钮时不起作用。我必须查看按钮的代码。你的行为怎么样?