UISlider that snaps to a fixed number of steps (like Text Size in the iOS 7 Settings app)

前端 未结 6 2207
情深已故
情深已故 2020-12-04 06:31

I\'m trying to create a UISlider that lets you choose from an array of numbers. Each slider position should be equidistant and the slider should snap to each po

6条回答
  •  一生所求
    2020-12-04 06:51

    Similar approach as PengOne, but I did manual rounding to make it more clear what was happening.

    - (IBAction)sliderDidEndEditing:(UISlider *)slider {
        // default value slider will start at
        float newValue = 0.0;
    
        if (slider.value < -1.5) {
            newValue = -3;
        } else if (slider.value < 1) {
            newValue = 0;
        } else if (slider.value < 3) {
            newValue = 2;
        } else if (slider.value < 5.5) {
            newValue = 4;
        } else if (slider.value < 8.5) {
            newValue = 7;
        } else if (slider.value < 11) {
            newValue = 10;
        } else {
            newValue = 12;
        }
        slider.value = newValue;
    }
    
    - (IBAction)sliderValueChanged:(id)sender {
        UISlider *slider = sender;
        float newValue = 0.0;
    
        if (slider.value < -1.5) {
            newValue = -3;
        } else if (slider.value < 1) {
            newValue = 0;
        } else if (slider.value < 3) {
            newValue = 2;
        } else if (slider.value < 5.5) {
            newValue = 4;
        } else if (slider.value < 8.5) {
            newValue = 7;
        } else if (slider.value < 11) {
            newValue = 10;
        } else {
            newValue = 12;
        }
        // and if you have a label displaying the slider value, set it
        [yourLabel].text = [NSString stringWithFormat:@"%d", (int)newValue];
    }
    

提交回复
热议问题