在Swift中自动移动UISlider

时间:2016-12-28 11:46:21

标签: ios swift uislider

我想在按下按钮时将UISlider从minValue移动到maxValue,再次点击按钮时将其停在当前位置,我想使用Swift。

我得到的主要问题是函数slider.setValue()是快速的方式,我希望动画更慢。

@IBAction func setSliderValue(_ sender: UIButton){
        slider.setValue(100, animated: true)
        print("The value of the slider is now \(slider.value)")
        sliderValue = Int(slider.value)
}

2 个答案:

答案 0 :(得分:1)

此代码正常工作,虽然滑块只是从左到右移动,而不是从达到最大值时从右到左移动,它应该从左到右然后从右到左移动直到无效。

public int[] resetUpMyArray(int[] inputArray, int deleteMeValue,int addMePosition) {
            List resultLinkedList = new LinkedList();

            for (int itemValue : inputArray)
                if (deleteMeValue == itemValue) {
                    System.out.println("Do not add this value"+itemValue);
                } else {
                    System.out.println("Do add this value "+itemValue +"position-"+deleteMeValue);
                    resultLinkedList.add(itemValue);
                }

            System.out.println("array -as new L.L->" + resultLinkedList);
            resultLinkedList.add(addMePosition,deleteMeValue);
            System.out.println("array -as new L.L all set->" + resultLinkedList);

            array = new int[resultLinkedList.size()];
            for (int i = 0; i < resultLinkedList.size(); i++) {
                array[i] = (int) resultLinkedList.get(i); // Watch out for NullPointerExceptions!
            }

            return array;
        }

答案 1 :(得分:0)

您可以使用时间自动移动滑块。 在全局范围内创建NSTimer变量: 还要在全局范围内创建一个Bool变量,以检查是否需要修改它。

var  mytimer : NSTimer?
var  reversing : Bool?

要为其设置动画时启动计时器:

reversing = NO;
mytimer =  NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)

在tImer Action上,您可以编写代码来更改Slider的值:

var sliderrange =  slider.maxValue - slider.minValue;
var increment = sliderrange/100;
var newval = slider.value;

newel = reversing ? (slider.value - increment) : (slider.value + increment);

if(newval >= slider.maxValue)
{
  reversing = true;
   newval = newval - 2*increment;

}
else  if(newel <= 0)
{
  reversing = false;
}
 slider.setValue(newval, animated: true)

开启按钮操作,您可以停止计时器,

 if mytimer != nil {
    mytimer!.invalidate()
    mytimer = nil
  }